<!DOCTYPE html>
<html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true">
<head>
  <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/light-3e154969b9f9.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" />
  <link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/dark_dimmed-afda8eb0fb33.css" />
  <link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/dark_high_contrast-2494e44ccdc5.css" />
  <link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/dark_colorblind-56fff47acadc.css" />
  <link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/light_colorblind-71cd4cc132ec.css" />
  <link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/light_high_contrast-fd5499848985.css" />
  <link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/light_tritanopia-31d17ba3e139.css" />
  <link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet"
    data-href="https://github.githubassets.com/assets/dark_tritanopia-68d6b2c79663.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/primer-primitives-4cf0d59ab51a.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/primer-ff8ec1db4f06.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/global-9e6d890d55ca.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/github-e4eed26e112b.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/repository-0f7cf89e325a.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/code-14def43eef8d.css" />




  <script type="application/json"
    id="client-env">{"locale":"en","featureFlags":["code_vulnerability_scanning","copilot_beta_features_opt_in","copilot_chat_conversation_intent_knowledge_search_skill","copilot_chat_static_thread_suggestions","copilot_completion_new_domain","copilot_conversational_ux_history_refs","copilot_copy_message","copilot_followup_to_agent","copilot_implicit_context","copilot_smell_icebreaker_ux","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_stream_handling","hovercard_accessibility","hovercard_longer_activate_timeout","marketing_pages_search_explore_provider","remove_child_patch","sample_network_conn_type","site_metered_billing_update"]}</script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/wp-runtime-576b6ad50bf4.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-89a69c248502.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-56729c905fe2.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-247092-627b030d3acc.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/environment-924e60bca7d2.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_focus-zone_js-c9086a4fb62b.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-7b95699705bc.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_anchored-position_js-node_modules_fzy_js_index-192fd2-a07608c791cf.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_details-d-ed9a97-841122a1e9d4.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-cd48220d74d5.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_delegated-events_dist_in-3efda3-701acb69193f.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-2e8678-34feeec9c894.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_catalyst_lib_index_js-node_modules_github_clipboard-copy-element_-782ca5-54763cd55b96.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-10eecb-16f8d12ecd9c.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/ui_packages_onfocus_onfocus_ts-ui_packages_trusted-types-policies_policy_ts-ui_packages_trust-0eb5c4-372296785620.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/github-elements-508a45ca23c6.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/element-registry-b37e75bff825.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_catalyst_lib_index_js-node_modules_github_hydro-analytics-client_-7901e7-dc88587c14ed.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_stack-68835d-a18220f1db8d.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ce7225a304c5.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-f8a5485c982a.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-858e043fcf76.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_github_hotkey-1a1d91-fa9f29a8514b.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-0e07cc183eed.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_session-resume_dist_index_js-node_modules_primer_behaviors_dist_e-ac74c6-5e03381c44b5.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_dimensions_js-node_modules_github_jtml_lib_index_js-53b423ede32a.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_textarea-autosi-9e0349-5003aaeba352.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-a2009221d154.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-e1ce06-30f9d5de7ad2.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-112600808cf9.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-467754-8979fbf79bf6.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-aeae6fcdf371.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_blob-anchor_ts-app_assets_modules_github_jump-to_page-views_ts-ui_p-38f236-6918e89ea155.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/behaviors-d6d4678bf9a9.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-06ff531-bf7e5a3732fd.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/notifications-global-54f34167118d.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_template-parts_lib_index_js-96453a51f920.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-e53a3f-62113d33abd1.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-00df584d9e79.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/codespaces-aa3619ac4fa9.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_filter--e7f8b0-c7aaf10ff072.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/app_assets_modules_github_repositories_get-repo-element_ts-78999cbaea69.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/repositories-57ecf4afba64.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-e73b311a14f1.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/code-menu-a8d08997ac4f.js"></script>

  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_primer_octicons-react_di-b40d97-2d816f3aa913.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Box_Box_js-55a9038b54f0.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Button_Button_js-b0edbfb6a9e5.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_TooltipV2_Tooltip_js-4d5019830e3c.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_node_modules_primer_octicons-react_dist_index_esm_mjs-a5155473fc69.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionList_index_js-fd5a7039f225.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionMenu_ActionMenu_js-node_modules_primer_react_-5b2420-50d72766db7f.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Text_Text_js-node_modules_primer_react_lib-esm_Text-7845da-9371f5bac483.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_FormControl_FormControl_js-1f51ab2bdcca.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_FilteredActionList_FilteredActionList_js-5a52bf212e2b.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Dialog_js-node_modules_primer_react_lib-esm_Feature-cdf735-4b63b6308961.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/ui_packages_react-core_create-browser-history_ts-ui_packages_safe-storage_safe-storage_ts-ui_-682c2c-40bb20608465.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/notifications-subscriptions-menu-075bd700538b.js"></script>
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/primer-react-css.8570b2718b0a9c0c8387.module.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" />

  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_primer_octicons-react_di-b40d97-2d816f3aa913.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Box_Box_js-55a9038b54f0.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Button_Button_js-b0edbfb6a9e5.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_TooltipV2_Tooltip_js-4d5019830e3c.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_node_modules_primer_octicons-react_dist_index_esm_mjs-a5155473fc69.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionList_index_js-fd5a7039f225.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionMenu_ActionMenu_js-node_modules_primer_react_-5b2420-50d72766db7f.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Text_Text_js-node_modules_primer_react_lib-esm_Text-7845da-9371f5bac483.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_FormControl_FormControl_js-1f51ab2bdcca.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_FilteredActionList_FilteredActionList_js-5a52bf212e2b.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Dialog_js-node_modules_primer_react_lib-esm_Feature-cdf735-4b63b6308961.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/ui_packages_react-core_create-browser-history_ts-ui_packages_safe-storage_safe-storage_ts-ui_-682c2c-40bb20608465.js"></script>
  <script crossorigin="anonymous" defer="defer" type="application/javascript"
    src="https://github.githubassets.com/assets/notifications-subscriptions-menu-075bd700538b.js"></script>
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/primer-react-css.8570b2718b0a9c0c8387.module.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet"
    href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" />


  <title>GitHub - HengXin666/HXNet: C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+
    http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, )</title>



  <meta name="route-pattern" content="/:user_id/:repository" data-turbo-transient>
  <meta name="route-controller" content="files" data-turbo-transient>
  <meta name="route-action" content="disambiguate" data-turbo-transient>


  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="BA32:3073D5:164F81D:188F8CD:66DACE75" data-pjax-transient="true" />
  <meta name="html-safe-nonce" content="04bb43db4fccbda374a9299b0ca99988db919f6e9ce978cb22c41233b66febbf"
    data-pjax-transient="true" />
  <meta name="visitor-payload"
    content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQTMyOjMwNzNENToxNjRGODFEOjE4OEY4Q0Q6NjZEQUNFNzUiLCJ2aXNpdG9yX2lkIjoiNjI4MDIwNjg1OTYwNzEzMzgxMyIsInJlZ2lvbl9lZGdlIjoic291dGhlYXN0YXNpYSIsInJlZ2lvbl9yZW5kZXIiOiJzb3V0aGVhc3Rhc2lhIn0="
    data-pjax-transient="true" />
  <meta name="visitor-hmac" content="b9400de1ebf72e18dcbf4fa29b52766aab46fb08516ee5142ab7fef052b5ee71"
    data-pjax-transient="true" />


  <meta name="hovercard-subject-tag" content="repository:829807063" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="repository,copilot" data-turbo-transient="true" />


  <meta name="selected-link" value="repo_source" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

  <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

  <meta name="octolytics-url" content="https://collector.github.com/github/collect" />

  <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;" data-turbo-transient="true" />






  <meta name="user-login" content="">



  <meta name="viewport" content="width=device-width">



  <meta name="description"
    content="C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, ) - HengXin666/HXNet">

  <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

  <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
  <meta property="fb:app_id" content="1401488693436528">
  <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/HengXin666/HXNet" />

  <meta name="twitter:image:src"
    content="https://opengraph.githubassets.com/f7f3b28f3d89d5943e3b3a0150aba1b962e7d751d3e44be82ee938ab1c1ec7a4/HengXin666/HXNet" />
  <meta name="twitter:site" content="@github" />
  <meta name="twitter:card" content="summary_large_image" />
  <meta name="twitter:title"
    content="GitHub - HengXin666/HXNet: C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, )" />
  <meta name="twitter:description"
    content="C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, ) - HengXin666/HXNet" />
  <meta property="og:image"
    content="https://opengraph.githubassets.com/f7f3b28f3d89d5943e3b3a0150aba1b962e7d751d3e44be82ee938ab1c1ec7a4/HengXin666/HXNet" />
  <meta property="og:image:alt"
    content="C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, ) - HengXin666/HXNet" />
  <meta property="og:image:width" content="1200" />
  <meta property="og:image:height" content="600" />
  <meta property="og:site_name" content="GitHub" />
  <meta property="og:type" content="object" />
  <meta property="og:title"
    content="GitHub - HengXin666/HXNet: C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, )" />
  <meta property="og:url" content="https://github.com/HengXin666/HXNet" />
  <meta property="og:description"
    content="C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, ) - HengXin666/HXNet" />





  <meta name="hostname" content="github.com">



  <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="d220c274b60f4880639bd7ed075bb48b05794b406243f6ea2f61c665ace406e8"
    data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="43bc2a0e2750a1219c17b5bf1ec22aae37041bbc018bc5e27bb7708f80e7ab88"
    data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="0692d1faacff0e5f0671b1eb94625703f3576acb66bf6ed8c33c9bde9a21f89f"
    data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="14689369b0c4f9fa063b88bd83c886d67269732edfdff73dd8e5aa970467bc5c"
    data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

  <meta data-hydrostats="publish">
  <meta name="go-import" content="github.com/HengXin666/HXNet git https://github.com/HengXin666/HXNet.git">

  <meta name="octolytics-dimension-user_id" content="103022267" />
  <meta name="octolytics-dimension-user_login" content="HengXin666" />
  <meta name="octolytics-dimension-repository_id" content="829807063" />
  <meta name="octolytics-dimension-repository_nwo" content="HengXin666/HXNet" />
  <meta name="octolytics-dimension-repository_public" content="true" />
  <meta name="octolytics-dimension-repository_is_fork" content="false" />
  <meta name="octolytics-dimension-repository_network_root_id" content="829807063" />
  <meta name="octolytics-dimension-repository_network_root_nwo" content="HengXin666/HXNet" />



  <link rel="canonical" href="https://github.com/HengXin666/HXNet" data-turbo-transient>


  <meta name="turbo-body-classes" content="logged-out env-production page-responsive">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">

  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png"
    href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml"
    href="https://github.githubassets.com/favicons/favicon.svg">

  <meta name="theme-color" content="#1e2327">
  <meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

</head>

<body class="logged-out env-production page-responsive" style="word-wrap: break-word;">
  <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;">



    <div class="position-relative js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false"
        class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to
        content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
        <span style="width: 0%;" data-view-component="true"
          class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
      </span>

      <script crossorigin="anonymous" defer="defer" type="application/javascript"
        src="https://github.githubassets.com/assets/vendors-node_modules_github_hotkey_dist_index_js-node_modules_lodash-es_capitalize_js-1aaea04d3ac5.js"></script>
      <script crossorigin="anonymous" defer="defer" type="application/javascript"
        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Dialog_Dialog_js-node_modules_primer_react_lib-esm_-d42c64-94dad1290f54.js"></script>
      <script crossorigin="anonymous" defer="defer" type="application/javascript"
        src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-219fad9889fa.js"></script>
      <script crossorigin="anonymous" defer="defer" type="application/javascript"
        src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-a84d01efac8c.js"></script>

      <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false">

        <script type="application/json"
          data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
        <div data-target="react-partial.reactRoot"></div>
      </react-partial>









      <script crossorigin="anonymous" defer="defer" type="application/javascript"
        src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-9a621ecbf672.js"></script>
      <script crossorigin="anonymous" defer="defer" type="application/javascript"
        src="https://github.githubassets.com/assets/sessions-f3ddee0032e4.js"></script>
      <header class="HeaderMktg header-logged-out js-details-container js-header Details position-relative f4 py-3"
        role="banner" data-color-mode=light data-light-theme=light data-dark-theme=dark>
        <h2 class="sr-only">Navigation Menu</h2>

        <button type="button"
          class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target"
          aria-label="Toggle navigation">
          <span class="d-none">Toggle navigation</span>
        </button>

        <div
          class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1">
          <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto">
            <div class="flex-1">
              <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true"
                class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1">
                <span class="Button-content">
                  <span class="Button-label">
                    <div class="HeaderMenu-toggle-bar rounded my-1"></div>
                    <div class="HeaderMenu-toggle-bar rounded my-1"></div>
                    <div class="HeaderMenu-toggle-bar rounded my-1"></div>
                  </span>
                </span>
              </button>
            </div>

            <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/"
              aria-label="Homepage"
              data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}">
              <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32"
                data-view-component="true" class="octicon octicon-mark-github">
                <path
                  d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z">
                </path>
              </svg>
            </a>

            <div class="flex-1 flex-order-2 text-right">
              <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FHengXin666%2FHXNet"
                class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav"
                data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                data-hydro-click-hmac="cd8e880083608df1c808cb32297efaf70ad3c29d96438cb89888a6c84c0f70b7"
                data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}">
                Sign in
              </a>
            </div>
          </div>


          <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0">
            <div
              class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0">
              <nav class="HeaderMenu-nav" aria-label="Global">
                <ul class="d-lg-flex list-style-none">
                  <li
                    class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
                    <button type="button"
                      class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target"
                      aria-expanded="false">
                      Product
                      <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
                        <path
                          d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z">
                        </path>
                      </svg>
                    </button>
                    <div
                      class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex dropdown-menu-wide">
                      <div class="px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
                        <ul class="list-style-none f5">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;actions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;actions_link_product_navbar&quot;}"
                              href="https://github.com/features/actions">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3">
                                <path
                                  d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Actions</div>
                                Automate any workflow
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;packages&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;packages_link_product_navbar&quot;}"
                              href="https://github.com/features/packages">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-package color-fg-subtle mr-3">
                                <path
                                  d="M12.876.64V.639l8.25 4.763c.541.313.875.89.875 1.515v9.525a1.75 1.75 0 0 1-.875 1.516l-8.25 4.762a1.748 1.748 0 0 1-1.75 0l-8.25-4.763a1.75 1.75 0 0 1-.875-1.515V6.917c0-.625.334-1.202.875-1.515L11.126.64a1.748 1.748 0 0 1 1.75 0Zm-1 1.298L4.251 6.34l7.75 4.474 7.75-4.474-7.625-4.402a.248.248 0 0 0-.25 0Zm.875 19.123 7.625-4.402a.25.25 0 0 0 .125-.216V7.639l-7.75 4.474ZM3.501 7.64v8.803c0 .09.048.172.125.216l7.625 4.402v-8.947Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Packages</div>
                                Host and manage packages
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_product_navbar&quot;}"
                              href="https://github.com/features/security">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3">
                                <path
                                  d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z">
                                </path>
                                <path
                                  d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Security</div>
                                Find and fix vulnerabilities
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;codespaces&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;codespaces_link_product_navbar&quot;}"
                              href="https://github.com/features/codespaces">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3">
                                <path
                                  d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z">
                                </path>
                                <path
                                  d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Codespaces</div>
                                Instant dev environments
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_product_navbar&quot;}"
                              href="https://github.com/features/copilot">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3">
                                <path
                                  d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z">
                                </path>
                                <path
                                  d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">GitHub Copilot</div>
                                Write better code with AI
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_review&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_review_link_product_navbar&quot;}"
                              href="https://github.com/features/code-review">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3">
                                <path
                                  d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z">
                                </path>
                                <path
                                  d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Code review</div>
                                Manage code changes
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;issues&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;issues_link_product_navbar&quot;}"
                              href="https://github.com/features/issues">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3">
                                <path
                                  d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Issues</div>
                                Plan and track work
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;discussions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;discussions_link_product_navbar&quot;}"
                              href="https://github.com/features/discussions">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true"
                                class="octicon octicon-comment-discussion color-fg-subtle mr-3">
                                <path
                                  d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z">
                                </path>
                                <path
                                  d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Discussions</div>
                                Collaborate outside of code
                              </div>


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="px-lg-4">
                        <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span>
                        <ul class="list-style-none f5" aria-labelledby="product-explore-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;all_features&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;all_features_link_product_navbar&quot;}"
                              href="https://github.com/features">
                              All features


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external"
                              target="_blank"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;documentation&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;documentation_link_product_navbar&quot;}"
                              href="https://docs.github.com">
                              Documentation

                              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                data-view-component="true"
                                class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
                                <path
                                  d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z">
                                </path>
                              </svg>
                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external"
                              target="_blank"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_skills&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_skills_link_product_navbar&quot;}"
                              href="https://skills.github.com">
                              GitHub Skills

                              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                data-view-component="true"
                                class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
                                <path
                                  d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z">
                                </path>
                              </svg>
                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external"
                              target="_blank"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;blog_link_product_navbar&quot;}"
                              href="https://github.blog">
                              Blog

                              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                data-view-component="true"
                                class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
                                <path
                                  d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z">
                                </path>
                              </svg>
                            </a>
                          </li>

                        </ul>
                      </div>
                    </div>
                  </li>

                  <li
                    class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
                    <button type="button"
                      class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target"
                      aria-expanded="false">
                      Solutions
                      <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
                        <path
                          d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z">
                        </path>
                      </svg>
                    </button>
                    <div
                      class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4">
                      <div class="border-bottom pb-3 mb-3">
                        <span class="d-block h4 color-fg-default my-1" id="solutions-by-size-heading">By size</span>
                        <ul class="list-style-none f5" aria-labelledby="solutions-by-size-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_link_solutions_navbar&quot;}"
                              href="https://github.com/enterprise">
                              Enterprise


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;teams&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;teams_link_solutions_navbar&quot;}"
                              href="https://github.com/team">
                              Teams


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;startups&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"
                              href="https://github.com/enterprise/startups">
                              Startups


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="border-bottom pb-3 mb-3">
                        <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By
                          industry</span>
                        <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;healthcare&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"
                              href="https://github.com/solutions/industries/healthcare">
                              Healthcare


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;financial_services&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"
                              href="https://github.com/solutions/industries/financial-services">
                              Financial services


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;manufacturing&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"
                              href="https://github.com/solutions/industries/manufacturing">
                              Manufacturing


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="">
                        <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use
                          case</span>
                        <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ci_cd_amp_automation&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ci_cd_amp_automation_link_solutions_navbar&quot;}"
                              href="https://github.com/solutions/ci-cd">
                              CI/CD &amp; Automation


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"
                              href="https://github.com/solutions/devops">
                              DevOps


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devsecops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"
                              href="https://github.com/solutions/devsecops">
                              DevSecOps


                            </a>
                          </li>

                        </ul>
                      </div>
                    </div>
                  </li>

                  <li
                    class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
                    <button type="button"
                      class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target"
                      aria-expanded="false">
                      Resources
                      <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
                        <path
                          d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z">
                        </path>
                      </svg>
                    </button>
                    <div
                      class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex dropdown-menu-wide">
                      <div class="px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
                        <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span>
                        <ul class="list-style-none f5" aria-labelledby="resources-topics-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"
                              href="/resources/articles/ai">
                              AI


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"
                              href="/resources/articles/devops">
                              DevOps


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"
                              href="/resources/articles/security">
                              Security


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;software_development&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"
                              href="/resources/articles/software-development">
                              Software Development


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_link_resources_navbar&quot;}"
                              href="/resources/articles">
                              View all


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="px-lg-4">
                        <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span>
                        <ul class="list-style-none f5" aria-labelledby="resources-explore-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external"
                              target="_blank"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;learning_pathways&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;learning_pathways_link_resources_navbar&quot;}"
                              href="https://resources.github.com/learn/pathways">
                              Learning Pathways

                              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                data-view-component="true"
                                class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
                                <path
                                  d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z">
                                </path>
                              </svg>
                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external"
                              target="_blank"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;white_papers_ebooks_webinars&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;white_papers_ebooks_webinars_link_resources_navbar&quot;}"
                              href="https://resources.github.com">
                              White papers, Ebooks, Webinars

                              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                data-view-component="true"
                                class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
                                <path
                                  d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z">
                                </path>
                              </svg>
                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"
                              href="https://github.com/customer-stories">
                              Customer Stories


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external"
                              target="_blank"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"
                              href="https://partner.github.com">
                              Partners

                              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                data-view-component="true"
                                class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
                                <path
                                  d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z">
                                </path>
                              </svg>
                            </a>
                          </li>

                        </ul>
                      </div>
                    </div>
                  </li>


                  <li
                    class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
                    <button type="button"
                      class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target"
                      aria-expanded="false">
                      Open Source
                      <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
                        <path
                          d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z">
                        </path>
                      </svg>
                    </button>
                    <div
                      class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4">
                      <div class="border-bottom pb-3 mb-3">
                        <ul class="list-style-none f5">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_sponsors&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"
                              href="/sponsors">

                              <div>
                                <div class="color-fg-default h4">GitHub Sponsors</div>
                                Fund open source developers
                              </div>


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="border-bottom pb-3 mb-3">
                        <ul class="list-style-none f5">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;the_readme_project&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;the_readme_project_link_open_source_navbar&quot;}"
                              href="https://github.com/readme">

                              <div>
                                <div class="color-fg-default h4">The ReadME Project</div>
                                GitHub community articles
                              </div>


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="">
                        <span class="d-block h4 color-fg-default my-1"
                          id="open-source-repositories-heading">Repositories</span>
                        <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;topics&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"
                              href="https://github.com/topics">
                              Topics


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;trending&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"
                              href="https://github.com/trending">
                              Trending


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;collections&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"
                              href="https://github.com/collections">
                              Collections


                            </a>
                          </li>

                        </ul>
                      </div>
                    </div>
                  </li>


                  <li
                    class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
                    <button type="button"
                      class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target"
                      aria-expanded="false">
                      Enterprise
                      <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
                        <path
                          d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z">
                        </path>
                      </svg>
                    </button>
                    <div
                      class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4">
                      <div class="border-bottom pb-3 mb-3">
                        <ul class="list-style-none f5">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"
                              href="/enterprise">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3">
                                <path
                                  d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z">
                                </path>
                                <path
                                  d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z">
                                </path>
                                <path
                                  d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Enterprise platform</div>
                                AI-powered developer platform
                              </div>


                            </a>
                          </li>

                        </ul>
                      </div>
                      <div class="">
                        <span class="d-block h4 color-fg-default my-1"
                          id="enterprise-available-add-ons-heading">Available add-ons</span>
                        <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading">
                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;advanced_security&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;advanced_security_link_enterprise_navbar&quot;}"
                              href="https://github.com/enterprise/advanced-security">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3">
                                <path
                                  d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z">
                                </path>
                                <path
                                  d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Advanced Security</div>
                                Enterprise-grade security features
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_enterprise_navbar&quot;}"
                              href="/features/copilot#enterprise">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3">
                                <path
                                  d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z">
                                </path>
                                <path
                                  d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">GitHub Copilot</div>
                                Enterprise-grade AI features
                              </div>


                            </a>
                          </li>

                          <li>
                            <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description"
                              data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"
                              href="/premium-support">
                              <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24"
                                data-view-component="true"
                                class="octicon octicon-comment-discussion color-fg-subtle mr-3">
                                <path
                                  d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z">
                                </path>
                                <path
                                  d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z">
                                </path>
                              </svg>
                              <div>
                                <div class="color-fg-default h4">Premium Support</div>
                                Enterprise-grade 24/7 support
                              </div>


                            </a>
                          </li>

                        </ul>
                      </div>
                    </div>
                  </li>


                  <li
                    class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
                    <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block"
                      data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;pricing_link_global_navbar&quot;}"
                      href="https://github.com/pricing">Pricing</a>
                  </li>

                </ul>
              </nav>

              <div
                class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3">



                <qbsearch-input class="search-input" data-scope="repo:HengXin666/HXNet"
                  data-custom-scopes-path="/search/custom_scopes"
                  data-delete-custom-scopes-csrf="sT67JoW_j0fIJKgbGO3jF83B_eWx2ujJSDJfaku_fUFhJnTZrU3b4C_7EQ2kFkO7koQBfStJnN4K_zDBeewg1w"
                  data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value=""
                  data-blackbird-suggestions-path="/search/suggestions"
                  data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
                  data-current-repository="HengXin666/HXNet" data-current-org="" data-current-owner="HengXin666"
                  data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false"
                  data-retain-scroll-position="true">
                  <div
                    class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded"
                    data-action="click:qbsearch-input#searchInputContainerClicked">
                    <button type="button"
                      class="header-search-button placeholder  input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none"
                      data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog"
                      placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off"
                      data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"
                      data-action="click:qbsearch-input#handleExpand">
                      <div class="mr-2 color-fg-muted">
                        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                          data-view-component="true" class="octicon octicon-search">
                          <path
                            d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z">
                          </path>
                        </svg>
                      </div>
                      <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span>
                      <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator">
                        <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1">
                          <path fill="none" stroke="#979A9C" opacity=".4"
                            d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z">
                          </path>
                          <path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path>
                        </svg>

                      </div>
                    </button>

                    <input type="hidden" name="type" class="js-site-search-type-field">


                    <div class="Overlay--hidden " data-modal-dialog-overlay>
                      <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose"
                        data-target="qbsearch-input.searchSuggestionsDialog" role="dialog"
                        id="search-suggestions-dialog" aria-modal="true"
                        aria-labelledby="search-suggestions-dialog-header" data-view-component="true"
                        class="Overlay Overlay--width-large Overlay--height-auto">
                        <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users,
                          issues, pull requests...</h1>
                        <div class="Overlay-body Overlay-body--paddingNone">

                          <div data-view-component="true">
                            <div
                              class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container"
                              style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden>
                              <!-- '"` --><!-- </textarea></xmp> --></option>
                              </form>
                              <form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get">
                                <query-builder data-target="qbsearch-input.queryBuilder"
                                  id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true"
                                  class="QueryBuilder search-query-builder">
                                  <div class="FormControl FormControl--fullWidth">
                                    <label id="query-builder-test-label" for="query-builder-test"
                                      class="FormControl-label sr-only">
                                      Search
                                    </label>
                                    <div class="QueryBuilder-StyledInput width-fit "
                                      data-target="query-builder.styledInput">
                                      <span id="query-builder-test-leadingvisual-wrap"
                                        class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap">
                                        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                          data-view-component="true"
                                          class="octicon octicon-search FormControl-input-leadingVisual">
                                          <path
                                            d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z">
                                          </path>
                                        </svg>
                                      </span>
                                      <div data-target="query-builder.styledInputContainer"
                                        class="QueryBuilder-StyledInputContainer">
                                        <div aria-hidden="true" class="QueryBuilder-StyledInputContent"
                                          data-target="query-builder.styledInputContent"></div>
                                        <div class="QueryBuilder-InputWrapper">
                                          <div aria-hidden="true" class="QueryBuilder-Sizer"
                                            data-target="query-builder.sizer"></div>
                                          <input id="query-builder-test" name="query-builder-test" value=""
                                            autocomplete="off" type="text" role="combobox" spellcheck="false"
                                            aria-expanded="false"
                                            aria-describedby="validation-bb03400d-0cc7-4c7b-aec3-d0a66a2828c6"
                                            data-target="query-builder.input" data-action="
          input:query-builder#inputChange
          blur:query-builder#inputBlur
          keydown:query-builder#inputKeydown
          focus:query-builder#inputFocus
        " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" />
                                        </div>
                                      </div>
                                      <span class="sr-only" id="query-builder-test-clear">Clear</span>
                                      <button role="button" id="query-builder-test-clear-button"
                                        aria-labelledby="query-builder-test-clear query-builder-test-label"
                                        data-target="query-builder.clearButton" data-action="
                click:query-builder#clear
                focus:query-builder#clearButtonFocus
                blur:query-builder#clearButtonBlur
              " variant="small" hidden="hidden" type="button" data-view-component="true"
                                        class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted">
                                        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                          data-view-component="true"
                                          class="octicon octicon-x-circle-fill Button-visual">
                                          <path
                                            d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z">
                                          </path>
                                        </svg>
                                      </button>

                                    </div>
                                    <template id="search-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-search">
                                        <path
                                          d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="code-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-code">
                                        <path
                                          d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="file-code-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-file-code">
                                        <path
                                          d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="history-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-history">
                                        <path
                                          d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="repo-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-repo">
                                        <path
                                          d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="bookmark-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-bookmark">
                                        <path
                                          d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="plus-circle-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-plus-circle">
                                        <path
                                          d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="circle-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-dot-fill">
                                        <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path>
                                      </svg>
                                    </template>

                                    <template id="trash-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-trash">
                                        <path
                                          d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="team-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-people">
                                        <path
                                          d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="project-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-project">
                                        <path
                                          d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="pencil-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-pencil">
                                        <path
                                          d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="copilot-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-copilot">
                                        <path
                                          d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z">
                                        </path>
                                        <path
                                          d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="copilot-error-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-copilot-error">
                                        <path
                                          d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="workflow-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-workflow">
                                        <path
                                          d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="book-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-book">
                                        <path
                                          d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="code-review-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-code-review">
                                        <path
                                          d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="codespaces-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-codespaces">
                                        <path
                                          d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z">
                                        </path>
                                        <path
                                          d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="comment-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-comment">
                                        <path
                                          d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="comment-discussion-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-comment-discussion">
                                        <path
                                          d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="organization-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-organization">
                                        <path
                                          d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="rocket-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-rocket">
                                        <path
                                          d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="shield-check-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-shield-check">
                                        <path
                                          d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="heart-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-heart">
                                        <path
                                          d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="server-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-server">
                                        <path
                                          d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="globe-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-globe">
                                        <path
                                          d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="issue-opened-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-issue-opened">
                                        <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
                                        <path
                                          d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="device-mobile-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-device-mobile">
                                        <path
                                          d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="package-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-package">
                                        <path
                                          d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="credit-card-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-credit-card">
                                        <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path>
                                        <path
                                          d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="play-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-play">
                                        <path
                                          d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="gift-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-gift">
                                        <path
                                          d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="code-square-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-code-square">
                                        <path
                                          d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <template id="device-desktop-icon">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-device-desktop">
                                        <path
                                          d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z">
                                        </path>
                                      </svg>
                                    </template>

                                    <div class="position-relative">
                                      <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap"
                                        aria-label="Suggestions" data-action="
                    combobox-commit:query-builder#comboboxCommit
                    mousedown:query-builder#resultsMousedown
                  " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results">
                                      </ul>
                                    </div>
                                    <div class="FormControl-inlineValidation"
                                      id="validation-bb03400d-0cc7-4c7b-aec3-d0a66a2828c6" hidden="hidden">
                                      <span class="FormControl-inlineValidation--visual">
                                        <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12"
                                          data-view-component="true" class="octicon octicon-alert-fill">
                                          <path
                                            d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z">
                                          </path>
                                        </svg>
                                      </span>
                                      <span></span>
                                    </div>
                                  </div>
                                  <div data-target="query-builder.screenReaderFeedback" aria-live="polite"
                                    aria-atomic="true" class="sr-only"></div>
                                </query-builder>
                              </form>
                              <div
                                class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt">
                                <a target="_blank"
                                  href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax"
                                  data-view-component="true" class="Link color-fg-accent text-normal ml-2">
                                  Search syntax tips
                                </a>
                                <div class="d-flex flex-1"></div>
                              </div>
                            </div>
                          </div>

                        </div>
                      </modal-dialog>
                    </div>
                  </div>
                  <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden
                    data-target="qbsearch-input.darkBackdrop"></div>
                  <div class="color-fg-default">

                    <dialog-helper>
                      <dialog data-target="qbsearch-input.feedbackDialog"
                        data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose"
                        id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title"
                        aria-describedby="feedback-dialog-description" data-view-component="true"
                        class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade">
                        <div data-view-component="true" class="Overlay-header">
                          <div class="Overlay-headerContentWrap">
                            <div class="Overlay-titleWrap">
                              <h1 class="Overlay-title " id="feedback-dialog-title">
                                Provide feedback
                              </h1>

                            </div>
                            <div class="Overlay-actionWrap">
                              <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button"
                                data-view-component="true" class="close-button Overlay-closeButton"><svg
                                  aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                  data-view-component="true" class="octicon octicon-x">
                                  <path
                                    d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z">
                                  </path>
                                </svg></button>
                            </div>
                          </div>

                        </div>
                        <scrollable-region data-labelled-by="feedback-dialog-title">
                          <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> -->
                            </option>
                            </form>
                            <form id="code-search-feedback-form" data-turbo="false" action="/search/feedback"
                              accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true"
                                name="authenticity_token"
                                value="9vet/2FY4NxeJmtllU3s4TVBaFRdsOpoEQrbbr+hKcP+ZSxpViSuGkdp7QslfzzzdNo3RiEfik3ARt/3nAMmvg==" />
                              <p>We read every piece of feedback, and take your input very seriously.</p>
                              <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px"
                                id="feedback"></textarea>
                              <input name="include_email" id="include_email"
                                aria-label="Include my email address so I can be contacted" class="form-control mr-2"
                                type="checkbox">
                              <label for="include_email" style="font-weight: normal">Include my email address so I can
                                be contacted</label>
                            </form>
                          </div>
                        </scrollable-region>
                        <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button
                            data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn">
                            Cancel
                          </button>
                          <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback"
                            type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback
                          </button>
                        </div>
                      </dialog>
                    </dialog-helper>

                    <custom-scopes data-target="qbsearch-input.customScopesManager">

                      <dialog-helper>
                        <dialog data-target="custom-scopes.customScopesModalDialog"
                          data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose"
                          id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title"
                          aria-describedby="custom-scopes-dialog-description" data-view-component="true"
                          class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade">
                          <div data-view-component="true" class="Overlay-header Overlay-header--divided">
                            <div class="Overlay-headerContentWrap">
                              <div class="Overlay-titleWrap">
                                <h1 class="Overlay-title " id="custom-scopes-dialog-title">
                                  Saved searches
                                </h1>
                                <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches
                                  to filter your results more quickly</h2>
                              </div>
                              <div class="Overlay-actionWrap">
                                <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button"
                                  data-view-component="true" class="close-button Overlay-closeButton"><svg
                                    aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                    data-view-component="true" class="octicon octicon-x">
                                    <path
                                      d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z">
                                    </path>
                                  </svg></button>
                              </div>
                            </div>

                          </div>
                          <scrollable-region data-labelled-by="custom-scopes-dialog-title">
                            <div data-view-component="true" class="Overlay-body">
                              <div data-target="custom-scopes.customScopesModalDialogFlash"></div>

                              <div hidden class="create-custom-scope-form"
                                data-target="custom-scopes.createCustomScopeForm">
                                <!-- '"` --><!-- </textarea></xmp> --></option>
                                </form>
                                <form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes"
                                  accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true"
                                    name="authenticity_token"
                                    value="atyTfr4CN6wvCCU10aTOdeGKPv60Rk0Ei1lLJulJyvlbpA7TfGJQMrju9SVCKCCVhkmDhXhF9YaGIxpC2f8P2A==" />
                                  <div data-target="custom-scopes.customScopesModalDialogFlash"></div>

                                  <input type="hidden" id="custom_scope_id" name="custom_scope_id"
                                    data-target="custom-scopes.customScopesIdField">

                                  <div class="form-group">
                                    <label for="custom_scope_name">Name</label>
                                    <auto-check src="/search/custom_scopes/check_name" required>
                                      <input type="text" name="custom_scope_name" id="custom_scope_name"
                                        data-target="custom-scopes.customScopesNameField" class="form-control"
                                        autocomplete="off" placeholder="github-ruby" required maxlength="50">
                                      <input type="hidden" data-csrf="true"
                                        value="AA0iALrXj6xWAGi4XmgdymkM067LyjD9SeRrZPHyo4j+Qs+vzChBOzSGK9hu47bxu4/XFu5JgpW7RmcqUNytbw==" />
                                    </auto-check>
                                  </div>

                                  <div class="form-group">
                                    <label for="custom_scope_query">Query</label>
                                    <input type="text" name="custom_scope_query" id="custom_scope_query"
                                      data-target="custom-scopes.customScopesQueryField" class="form-control"
                                      autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python"
                                      required maxlength="500">
                                  </div>

                                  <p class="text-small color-fg-muted">
                                    To see all available qualifiers, see our <a class="Link--inTextBlock"
                                      href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>.
                                  </p>
                                </form>
                              </div>

                              <div data-target="custom-scopes.manageCustomScopesForm">
                                <div data-target="custom-scopes.list"></div>
                              </div>

                            </div>
                          </scrollable-region>
                          <div data-view-component="true"
                            class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button
                              data-action="click:custom-scopes#customScopesCancel" type="button"
                              data-view-component="true" class="btn"> Cancel
                            </button>
                            <button form="custom-scopes-dialog-form"
                              data-action="click:custom-scopes#customScopesSubmit"
                              data-target="custom-scopes.customScopesSubmitButton" type="submit"
                              data-view-component="true" class="btn-primary btn"> Create saved search
                            </button>
                          </div>
                        </dialog>
                      </dialog-helper>
                    </custom-scopes>
                  </div>
                </qbsearch-input>

                <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block">
                  <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FHengXin666%2FHXNet"
                    class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1"
                    style="margin-left: 12px;"
                    data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                    data-hydro-click-hmac="cd8e880083608df1c808cb32297efaf70ad3c29d96438cb89888a6c84c0f70b7"
                    data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}">
                    Sign in
                  </a>
                </div>

                <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo&amp;source_repo=HengXin666%2FHXNet"
                  class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1"
                  data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                  data-hydro-click-hmac="cd8e880083608df1c808cb32297efaf70ad3c29d96438cb89888a6c84c0f70b7"
                  data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;;ref_cta:Sign up;ref_loc:header logged out&quot;}">
                  Sign up
                </a>
                <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting
                  focus</button>
              </div>
            </div>
          </div>
        </div>
      </header>

      <div hidden="hidden" data-view-component="true"
        class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">

        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
          class="octicon octicon-alert">
          <path
            d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
          </path>
        </svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a
            class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a
            class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a
            class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

        <button id="icon-button-6c4a83e2-0a6e-4387-9cc5-dedbcd8c9f69"
          aria-labelledby="tooltip-786722c2-c5a3-4c79-830a-5939f58cc9c5" type="button" data-view-component="true"
          class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg
            aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
            class="octicon octicon-x Button-visual">
            <path
              d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z">
            </path>
          </svg>
        </button><tool-tip id="tooltip-786722c2-c5a3-4c79-830a-5939f58cc9c5"
          for="icon-button-6c4a83e2-0a6e-4387-9cc5-dedbcd8c9f69" popover="manual" data-direction="s" data-type="label"
          data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>



      </div>
    </div>

    <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>




      <template class="js-flash-template">

        <div class="flash flash-full   {{ className }}">
          <div>
            <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
              <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                data-view-component="true" class="octicon octicon-x">
                <path
                  d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z">
                </path>
              </svg>
            </button>
            <div aria-atomic="true" role="alert" class="js-flash-alert">

              <div>{{ message }}</div>

            </div>
          </div>
        </div>
      </template>
    </div>



    <include-fragment class="js-notification-shelf-include-fragment"
      data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>





    <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled
      data-issue-and-pr-hovercards-enabled>
      <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
        <main id="js-repo-pjax-container">















          <div id="repository-container-header" class="pt-3 hide-full-screen"
            style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace>

            <div class="d-flex flex-nowrap flex-justify-end mb-3  px-3 px-lg-5" style="gap: 1rem;">

              <div class="flex-auto min-width-0 width-fit">

                <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
                  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                    data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2">
                    <path
                      d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z">
                    </path>
                  </svg>

                  <span class="author flex-self-stretch" itemprop="author">
                    <a class="url fn" rel="author" data-hovercard-type="user"
                      data-hovercard-url="/users/HengXin666/hovercard" data-octo-click="hovercard-link-click"
                      data-octo-dimensions="link_type:self" href="/HengXin666">
                      HengXin666
                    </a> </span>
                  <span class="mx-1 flex-self-stretch color-fg-muted">/</span>
                  <strong itemprop="name" class="mr-2 flex-self-stretch">
                    <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                      href="/HengXin666/HXNet">HXNet</a>
                  </strong>

                  <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
                </div>


              </div>

              <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;">
                <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">



                  <li>
                    <a href="/login?return_to=%2FHengXin666%2FHXNet" rel="nofollow" id="repository-details-watch-button"
                      data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                      data-hydro-click-hmac="2954b35e92651b85eb156db6da30c7323c2e965feb6676d56d2e7c03bb22fffc"
                      aria-label="You must be signed in to change notification settings" data-view-component="true"
                      class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1"
                        width="16" data-view-component="true" class="octicon octicon-bell mr-2">
                        <path
                          d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z">
                        </path>
                      </svg>Notifications
                    </a> <tool-tip id="tooltip-43a75f52-5eb9-458b-9552-aec3937351a3"
                      for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description"
                      data-view-component="true" class="sr-only position-absolute">You must be signed in to change
                      notification settings</tool-tip>

                  </li>

                  <li>
                    <a icon="repo-forked" id="fork-button" href="/login?return_to=%2FHengXin666%2FHXNet" rel="nofollow"
                      data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:829807063,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                      data-hydro-click-hmac="6524dc6230bf80cf5c28f062933bafd3ce4227f89b96c17770b4d36afd7ee4c1"
                      data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16"
                        viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
                        class="octicon octicon-repo-forked mr-2">
                        <path
                          d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z">
                        </path>
                      </svg>Fork
                      <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="0"
                        data-view-component="true" class="Counter">0</span>
                    </a>
                  </li>

                  <li>
                    <div data-view-component="true" class="BtnGroup d-flex">
                      <a href="/login?return_to=%2FHengXin666%2FHXNet" rel="nofollow"
                        data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:829807063,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                        data-hydro-click-hmac="aee556b6060973f39b602a13ded0fc1b043cace0ddaa5b7e52b4e5339fc28c46"
                        aria-label="You must be signed in to star a repository" data-view-component="true"
                        class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16"
                          viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
                          class="octicon octicon-star v-align-text-bottom d-inline-block mr-2">
                          <path
                            d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z">
                          </path>
                        </svg><span data-view-component="true" class="d-inline">
                          Star
                        </span> <span id="repo-stars-counter-star" aria-label="1 user starred this repository"
                          data-singular-suffix="user starred this repository"
                          data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1"
                          data-view-component="true" class="Counter js-social-count">1</span>
                      </a>
                    </div>
                  </li>

                </ul>

              </div>
            </div>

            <div id="responsive-meta-container" data-turbo-replace>
              <div class="d-block d-md-none mb-2 px-3 px-md-4 px-lg-5">
                <p class="f4 mb-3 ">
                  C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+ http/https/websocket、socks5代理、Json解析,
                  静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, )
                </p>


                <h3 class="sr-only">License</h3>
                <div class="mb-2">
                  <a href="/HengXin666/HXNet/blob/main/LICENSE" class="Link--muted"
                    data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:license&quot;}">
                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-law mr-2">
                      <path
                        d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z">
                      </path>
                    </svg>
                    Apache-2.0 license
                  </a>
                </div>


                <div class="mb-3">
                  <a class="Link--secondary no-underline mr-3" href="/HengXin666/HXNet/stargazers">
                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-star mr-1">
                      <path
                        d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z">
                      </path>
                    </svg>
                    <span class="text-bold">1</span>
                    star
                  </a> <a class="Link--secondary no-underline mr-3" href="/HengXin666/HXNet/forks">
                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-repo-forked mr-1">
                      <path
                        d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z">
                      </path>
                    </svg>
                    <span class="text-bold">0</span>
                    forks
                  </a> <a class="Link--secondary no-underline mr-3 d-inline-block" href="/HengXin666/HXNet/branches">
                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-git-branch mr-1">
                      <path
                        d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z">
                      </path>
                    </svg>
                    <span>Branches</span>
                  </a> <a class="Link--secondary no-underline d-inline-block" href="/HengXin666/HXNet/tags">
                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-tag mr-1">
                      <path
                        d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z">
                      </path>
                    </svg>
                    <span>Tags</span>
                  </a> <a class="Link--secondary no-underline d-inline-block" href="/HengXin666/HXNet/activity">
                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-pulse mr-1">
                      <path
                        d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z">
                      </path>
                    </svg>
                    <span>Activity</span>
                  </a>
                </div>

                <div class="d-flex flex-wrap gap-2">
                  <div class="flex-1">
                    <div data-view-component="true" class="BtnGroup d-flex">
                      <a href="/login?return_to=%2FHengXin666%2FHXNet" rel="nofollow"
                        data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:829807063,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                        data-hydro-click-hmac="aee556b6060973f39b602a13ded0fc1b043cace0ddaa5b7e52b4e5339fc28c46"
                        aria-label="You must be signed in to star a repository" data-view-component="true"
                        class="tooltipped tooltipped-sw btn-sm btn btn-block"> <svg aria-hidden="true" height="16"
                          viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
                          class="octicon octicon-star v-align-text-bottom d-inline-block mr-2">
                          <path
                            d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z">
                          </path>
                        </svg><span data-view-component="true" class="d-inline">
                          Star
                        </span>
                      </a>
                    </div>
                  </div>
                  <div class="flex-1">
                    <a href="/login?return_to=%2FHengXin666%2FHXNet" rel="nofollow" id="files-overview-watch-button"
                      data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/HengXin666/HXNet&quot;,&quot;user_id&quot;:null}}"
                      data-hydro-click-hmac="2954b35e92651b85eb156db6da30c7323c2e965feb6676d56d2e7c03bb22fffc"
                      aria-label="You must be signed in to change notification settings" data-view-component="true"
                      class="btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16"
                        version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2">
                        <path
                          d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z">
                        </path>
                      </svg>Notifications
                    </a> <tool-tip id="tooltip-cb16438c-5115-4ba7-8124-15274085ff70" for="files-overview-watch-button"
                      popover="manual" data-direction="s" data-type="description" data-view-component="true"
                      class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip>

                  </div>
                  <span>


                  </span>
                </div>
              </div>

            </div>


            <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true"
              class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5">

              <ul data-view-component="true" class="UnderlineNav-body list-style-none">
                <li data-view-component="true" class="d-inline-flex">
                  <a id="code-tab" href="/HengXin666/HXNet" data-tab-item="i0code-tab"
                    data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /HengXin666/HXNet"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-hotkey="g c"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    aria-current="page" data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
                      <path
                        d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z">
                      </path>
                    </svg>
                    <span data-content="Code">Code</span>
                    <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available"
                      data-view-component="true" class="Counter"></span>



                  </a>
                </li>
                <li data-view-component="true" class="d-inline-flex">
                  <a id="issues-tab" href="/HengXin666/HXNet/issues" data-tab-item="i1issues-tab"
                    data-selected-links="repo_issues repo_labels repo_milestones /HengXin666/HXNet/issues /_view_fragments/issues/index/HengXin666/HXNet/layout"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-hotkey="g i"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true"
                      class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
                      <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
                      <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
                    </svg>
                    <span data-content="Issues">Issues</span>
                    <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0"
                      hidden="hidden" data-view-component="true" class="Counter">0</span>



                  </a>
                </li>
                <li data-view-component="true" class="d-inline-flex">
                  <a id="pull-requests-tab" href="/HengXin666/HXNet/pulls" data-tab-item="i2pull-requests-tab"
                    data-selected-links="repo_pulls checks /HengXin666/HXNet/pulls"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-hotkey="g p"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true"
                      class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
                      <path
                        d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z">
                      </path>
                    </svg>
                    <span data-content="Pull requests">Pull requests</span>
                    <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0"
                      hidden="hidden" data-view-component="true" class="Counter">0</span>



                  </a>
                </li>
                <li data-view-component="true" class="d-inline-flex">
                  <a id="actions-tab" href="/HengXin666/HXNet/actions" data-tab-item="i3actions-tab"
                    data-selected-links="repo_actions /HengXin666/HXNet/actions"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-hotkey="g a"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
                      <path
                        d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z">
                      </path>
                    </svg>
                    <span data-content="Actions">Actions</span>
                    <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available"
                      data-view-component="true" class="Counter"></span>



                  </a>
                </li>
                <li data-view-component="true" class="d-inline-flex">
                  <a id="projects-tab" href="/HengXin666/HXNet/projects" data-tab-item="i4projects-tab"
                    data-selected-links="repo_projects new_repo_project repo_project /HengXin666/HXNet/projects"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-hotkey="g b"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Projects&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline">
                      <path
                        d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z">
                      </path>
                    </svg>
                    <span data-content="Projects">Projects</span>
                    <span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0"
                      hidden="hidden" data-view-component="true" class="Counter">0</span>



                  </a>
                </li>
                <li data-view-component="true" class="d-inline-flex">
                  <a id="security-tab" href="/HengXin666/HXNet/security" data-tab-item="i5security-tab"
                    data-selected-links="security overview alerts policy token_scanning code_scanning /HengXin666/HXNet/security"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-hotkey="g s"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
                      <path
                        d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
                      </path>
                    </svg>
                    <span data-content="Security">Security</span>
                    <include-fragment src="/HengXin666/HXNet/security/overall-count"
                      accept="text/fragment+html"></include-fragment>


                  </a>
                </li>
                <li data-view-component="true" class="d-inline-flex">
                  <a id="insights-tab" href="/HengXin666/HXNet/pulse" data-tab-item="i6insights-tab"
                    data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /HengXin666/HXNet/pulse"
                    data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"
                    data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}"
                    data-view-component="true"
                    class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

                    <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                      data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
                      <path
                        d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z">
                      </path>
                    </svg>
                    <span data-content="Insights">Insights</span>
                    <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available"
                      data-view-component="true" class="Counter"></span>



                  </a>
                </li>
              </ul>
              <div style="visibility:hidden;" data-view-component="true"
                class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0">
                <action-menu data-select-variant="none" data-view-component="true">
                  <focus-group direction="vertical" mnemonics retain>
                    <button id="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-button"
                      popovertarget="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-overlay"
                      aria-controls="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-list" aria-haspopup="true"
                      aria-labelledby="tooltip-c0dd8aa7-ab34-4c4b-977c-dec3065c862c" type="button"
                      data-view-component="true"
                      class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg
                        aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual">
                        <path
                          d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z">
                        </path>
                      </svg>
                    </button><tool-tip id="tooltip-c0dd8aa7-ab34-4c4b-977c-dec3065c862c"
                      for="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-button" popover="manual" data-direction="s"
                      data-type="label" data-view-component="true" class="sr-only position-absolute">Additional
                      navigation options</tool-tip>


                    <anchored-position id="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-overlay"
                      anchor="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-button" align="start"
                      side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true">
                      <div data-view-component="true" class="Overlay Overlay--size-auto">

                        <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list>
                            <div data-view-component="true">
                              <ul aria-labelledby="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-button"
                                id="action-menu-08d30c05-78ad-48d9-b514-6a8cfa7f2d3a-list" role="menu"
                                data-view-component="true" class="ActionListWrap--inset ActionListWrap">
                                <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items"
                                  role="none" data-view-component="true" class="ActionListItem">


                                  <a tabindex="-1" id="item-027ece1e-ce92-4ccd-a425-4e5955606aa8"
                                    href="/HengXin666/HXNet" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-code">
                                        <path
                                          d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Code
                                    </span>
                                  </a>

                                </li>
                                <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items"
                                  role="none" data-view-component="true" class="ActionListItem">


                                  <a tabindex="-1" id="item-f701aaed-7ee9-49f2-86cc-3664547bd926"
                                    href="/HengXin666/HXNet/issues" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-issue-opened">
                                        <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
                                        <path
                                          d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Issues
                                    </span>
                                  </a>

                                </li>
                                <li hidden="hidden" data-menu-item="i2pull-requests-tab"
                                  data-targets="action-list.items" role="none" data-view-component="true"
                                  class="ActionListItem">


                                  <a tabindex="-1" id="item-46dfcf9b-f9d1-49e4-b7eb-6c41fed17a09"
                                    href="/HengXin666/HXNet/pulls" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-git-pull-request">
                                        <path
                                          d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Pull requests
                                    </span>
                                  </a>

                                </li>
                                <li hidden="hidden" data-menu-item="i3actions-tab" data-targets="action-list.items"
                                  role="none" data-view-component="true" class="ActionListItem">


                                  <a tabindex="-1" id="item-6ba44f63-9b5a-434f-b72f-eab778bbf4cd"
                                    href="/HengXin666/HXNet/actions" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-play">
                                        <path
                                          d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Actions
                                    </span>
                                  </a>

                                </li>
                                <li hidden="hidden" data-menu-item="i4projects-tab" data-targets="action-list.items"
                                  role="none" data-view-component="true" class="ActionListItem">


                                  <a tabindex="-1" id="item-e399db9b-cf9e-42c4-ad4e-6b093ab6c747"
                                    href="/HengXin666/HXNet/projects" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-table">
                                        <path
                                          d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Projects
                                    </span>
                                  </a>

                                </li>
                                <li hidden="hidden" data-menu-item="i5security-tab" data-targets="action-list.items"
                                  role="none" data-view-component="true" class="ActionListItem">


                                  <a tabindex="-1" id="item-747d617e-f4e3-4fae-8e2b-ae2d0409c0f2"
                                    href="/HengXin666/HXNet/security" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-shield">
                                        <path
                                          d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Security
                                    </span>
                                  </a>

                                </li>
                                <li hidden="hidden" data-menu-item="i6insights-tab" data-targets="action-list.items"
                                  role="none" data-view-component="true" class="ActionListItem">


                                  <a tabindex="-1" id="item-784d9aa9-83d7-4d23-884e-95e251cb281a"
                                    href="/HengXin666/HXNet/pulse" role="menuitem" data-view-component="true"
                                    class="ActionListContent ActionListContent--visual16">
                                    <span class="ActionListItem-visual ActionListItem-visual--leading">
                                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                        data-view-component="true" class="octicon octicon-graph">
                                        <path
                                          d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z">
                                        </path>
                                      </svg>
                                    </span>

                                    <span data-view-component="true" class="ActionListItem-label">
                                      Insights
                                    </span>
                                  </a>

                                </li>
                              </ul>
                            </div>
                          </action-list>


                        </div>

                      </div>
                    </anchored-position> </focus-group>
                </action-menu></div>
            </nav>

          </div>





          <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
            <div id="repo-content-pjax-container" class="repository-content ">






              <h1 class='sr-only'>HengXin666/HXNet</h1>
              <div class="clearfix container-xl px-md-4 px-lg-5 px-3">
                <div>

                  <div id="spoof-warning" class="mt-0 pb-3" hidden aria-hidden>
                    <div data-view-component="true" class="flash flash-warn mt-0 clearfix">

                      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                        data-view-component="true" class="octicon octicon-alert float-left mt-1">
                        <path
                          d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
                        </path>
                      </svg>

                      <div class="overflow-hidden">This commit does not belong to any branch on this repository, and may
                        belong to a fork outside of the repository.</div>



                    </div>
                  </div>

                  <include-fragment
                    src="/HengXin666/HXNet/spoofed_commit_check/111dd78293b1ee8e7f9624bda2da945d20f82e19"
                    data-test-selector="spoofed-commit-check"></include-fragment>

                  <div style="max-width: 100%" data-view-component="true"
                    class="Layout Layout--flowRow-until-md react-repos-overview-margin Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end">
                    <div data-view-component="true" class="Layout-main">
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_primer_octicons-react_di-b40d97-2d816f3aa913.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Box_Box_js-55a9038b54f0.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Button_Button_js-b0edbfb6a9e5.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_TooltipV2_Tooltip_js-4d5019830e3c.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_node_modules_primer_octicons-react_dist_index_esm_mjs-a5155473fc69.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionList_index_js-fd5a7039f225.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionMenu_ActionMenu_js-node_modules_primer_react_-5b2420-50d72766db7f.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_react-router-dom_dist_index_js-c5568c29d405.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_UnderlineNav_index_js-a48891f88da5.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_anchored-position_js-node_modules_primer_react-4d507b-85f1dac4ce7d.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_AvatarStack_AvatarStack_js-node_modules_primer_reac-e928e7-f56f0e1948cc.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_react-core_create-browser-history_ts-ui_packages_safe-storage_safe-storage_ts-ui_-682c2c-40bb20608465.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-95eadd06c410.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-7b0796d1324c.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_copy-to-clipboard_index_ts-ui_packages_react-core_use-feature-flag_ts-ui_packages-9fa6b6-38f2efd2a5c2.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_commit-checks-status_index_ts-ui_packages_focus-hint-context_FocusHintContext_tsx-125ec2e370d6.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-9a3d65-0ca8f7cc3921.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/ui_packages_use-alive_use-alive_ts-ui_packages_use-analytics_use-analytics_ts-ui_packages_cod-51c40c-8b689e84b1dc.js"></script>
                      <script crossorigin="anonymous" defer="defer" type="application/javascript"
                        src="https://github.githubassets.com/assets/repos-overview-0d155a5d088e.js"></script>
                      <link crossorigin="anonymous" media="all" rel="stylesheet"
                        href="https://github.githubassets.com/assets/primer-react-css.8570b2718b0a9c0c8387.module.css" />
                      <link crossorigin="anonymous" media="all" rel="stylesheet"
                        href="https://github.githubassets.com/assets/repos-overview.47b2222c697daf78496d.module.css" />

                      <react-partial partial-name="repos-overview" data-ssr="true">

                        <script type="application/json"
                          data-target="react-partial.embeddedData">{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":829807063,"defaultBranch":"main","name":"HXNet","ownerLogin":"HengXin666","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-07-17T03:29:56.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/103022267?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"main","listCacheKey":"v0:1724160638.0","canEdit":false,"refType":"branch","currentOid":"111dd78293b1ee8e7f9624bda2da945d20f82e19"},"tree":{"items":[{"name":"certs","path":"certs","contentType":"directory"},{"name":"documents","path":"documents","contentType":"directory"},{"name":"examples","path":"examples","contentType":"directory"},{"name":"include","path":"include","contentType":"directory"},{"name":"lib","path":"lib","contentType":"directory"},{"name":"src","path":"src","contentType":"directory"},{"name":"static","path":"static","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"CMakeLists.txt","path":"CMakeLists.txt","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":11,"showBranchInfobar":false},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/HengXin666/HXNet/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/HengXin666/HXNet.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone HengXin666/HXNet","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"https://developer.apple.com","zipballUrl":"/HengXin666/HXNet/archive/refs/heads/main.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=829807063"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"188","overviewFiles":[{"displayName":"README.md","repoName":"HXNet","refName":"main","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 align=\"center\" tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHXNet\u003c/h1\u003e\u003ca id=\"user-content-hxnet\" class=\"anchor\" aria-label=\"Permalink: HXNet\" href=\"#hxnet\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-alert markdown-alert-note\" dir=\"auto\"\u003e\u003cp class=\"markdown-alert-title\" dir=\"auto\"\u003e\u003csvg class=\"octicon octicon-info mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"\u003e\u003c/path\u003e\u003c/svg\u003eNote\u003c/p\u003e\u003cp dir=\"auto\"\u003e\u003cem\u003eHeng_Xin学习现代Cpp的代码存放库\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e基于\u003ccode\u003eio_uring\u003c/code\u003e+协程的\u003ccode\u003ehttp/https\u003c/code\u003e服务器, 基于压缩前缀树的路由, 支持\u003ccode\u003ehttp/https\u003c/code\u003e解析, \u003ccode\u003eWebSocket\u003c/code\u003e协议, \u003ccode\u003eJson\u003c/code\u003e解析, 万用\u003ccode\u003eprint\u003c/code\u003e等;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e客户端提供了简单的协程的\u003ccode\u003erequest\u003c/code\u003e方法(API), 并且支持使用\u003ccode\u003esocks5\u003c/code\u003e代理. 支持\u003ccode\u003ehttp/https\u003c/code\u003e, 以及解析\u003ccode\u003eTransfer-Encoding\u003c/code\u003e分块编码的响应体\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e构建要求\u003c/h2\u003e\u003ca id=\"user-content-构建要求\" class=\"anchor\" aria-label=\"Permalink: 构建要求\" href=\"#构建要求\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eLinux 5.1+\u003c/li\u003e\n\u003cli\u003eGCC 编译器 (推荐)\u003c/li\u003e\n\u003cli\u003eC++20\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e快速开始\u003c/h2\u003e\u003ca id=\"user-content-快速开始\" class=\"anchor\" aria-label=\"Permalink: 快速开始\" href=\"#快速开始\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-alert markdown-alert-tip\" dir=\"auto\"\u003e\u003cp class=\"markdown-alert-title\" dir=\"auto\"\u003e\u003csvg class=\"octicon octicon-light-bulb mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z\"\u003e\u003c/path\u003e\u003c/svg\u003eTip\u003c/p\u003e\u003cp dir=\"auto\"\u003e仍然在开发, 非最终产品\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e其他示例:\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"/HengXin666/HXNet/blob/main/examples/ChatServer.cpp\"\u003e基于轮询的聊天室\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/HengXin666/HXNet/blob/main/examples/WsServer.cpp\"\u003eWebSocket服务端\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/HengXin666/HXNet/blob/main/examples/Client.cpp\"\u003e支持\u003ccode\u003esocks5\u003c/code\u003e代理的\u003ccode\u003eHttp/Https\u003c/code\u003e客户端\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e编写端点 (提供了简化使用的 API 宏)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight highlight-source-c++ notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#include \u0026lt;HXWeb/HXApiHelper.h\u0026gt; // 使用简化的api\n\n// 用户定义的控制器\nclass MyWebController {\n\n    // 定义端点函数\n    ENDPOINT_BEGIN(API_GET, \u0026quot;/\u0026quot;, root) { // 注册get请求, 接收`/`路径请求\n        RESPONSE_DATA( // 响应数据\n            200, // 状态码\n            co_await HX::STL::utils::FileUtils::asyncGetFileContent(\u0026quot;index.html\u0026quot;), // (body数据) 异步(协程)读取文件\n            \u0026quot;text/html\u0026quot;, \u0026quot;UTF-8\u0026quot; // (响应类型), 以及响应编码\n        );\n        co_return true; // 注意, 端点函数是协程, 得使用 co_return 而不是return (返回值是 bool)\n                        // bool 的意思是是否复用连接 (HTTP/1.1 是推荐复用连接的)\n    } ENDPOINT_END;\n\n    ENDPOINT_BEGIN(API_GET, \u0026quot;/favicon.ico\u0026quot;, faviconIco) {\n        RESPONSE_DATA(\n            200, \n            co_await HX::STL::utils::FileUtils::asyncGetFileContent(\u0026quot;favicon.ico\u0026quot;),\n            \u0026quot;image/x-icon\u0026quot; // 响应编码 可以不写\n        );\n        co_return true;\n    } ENDPOINT_END;\n\n    ENDPOINT_BEGIN(API_GET, \u0026quot;/files/**\u0026quot;, files) {\n        PARSE_MULTI_LEVEL_PARAM(path);\n        RESPONSE_STATUS(200).setContentType(\u0026quot;text/html\u0026quot;, \u0026quot;UTF-8\u0026quot;)\n                            .setBodyData(\u0026quot;\u0026lt;h1\u0026gt; files URL is \u0026quot; + path + \u0026quot;\u0026lt;/h1\u0026gt;\u0026quot;); \n        // 支持直接在端点里面响应 (记得co_await)\n        // 响应后, 不会再次在 ConnectionHandler 中再次响应!\n        co_await io.sendResponse(); // 立即发送响应\n        co_return true;\n    } ENDPOINT_END;\n\n    ENDPOINT_BEGIN(API_GET, \u0026quot;/home/{id}/{name}\u0026quot;, getIdAndNameByHome) {\n        START_PARSE_PATH_PARAMS; // 开始解析请求路径参数\n        PARSE_PARAM(0, u_int32_t, id, false); // 解析第一个路径参数{id}, 解析为 u_int32_t类型, 命名为 id\n                                              // 并且如果解析失败则不复用连接 (false)\n\n        PARSE_PARAM(1, std::string, name);    // 解析第二个路径参数{name} (不写, 则默认复用连接)\n\n        // 解析查询参数为键值对; ?awa=xxx 这种\n        GET_PARSE_QUERY_PARAMETERS(queryMap);\n\n        if (queryMap.count(\u0026quot;loli\u0026quot;)) // 如果解析到 ?loli=xxx\n            std::cout \u0026lt;\u0026lt; queryMap[\u0026quot;loli\u0026quot;] \u0026lt;\u0026lt; '\\n'; // xxx 的值\n\n        RESPONSE_DATA(\n            200, \n            \u0026quot;\u0026lt;h1\u0026gt; Home id 是 \u0026quot; + std::to_string(*id) + \u0026quot;, 而名字是 \u0026quot; \n            + *name + \u0026quot;\u0026lt;/h1\u0026gt;\u0026lt;h2\u0026gt; 来自 URL: \u0026quot; \n            + io.getRequest().getRequesPath()  + \u0026quot; 的解析\u0026lt;/h2\u0026gt;\u0026quot;, // 默认`ENDPOINT_BEGIN`会传入 const HX::web::server::IO\u0026lt;\u0026gt;\u0026amp; io, 您可以对其进行更细致的操作\n            \u0026quot;text/html\u0026quot;, \u0026quot;UTF-8\u0026quot;\n        );\n        co_return true;\n    } ENDPOINT_END;\n\npublic: // 控制器成员函数 (请写成`static`方法)\n    // todo...\n};\"\u003e\u003cpre\u003e#\u003cspan class=\"pl-k\"\u003einclude\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\u0026lt;\u003c/span\u003eHXWeb/HXApiHelper.h\u003cspan class=\"pl-pds\"\u003e\u0026gt;\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 使用简化的api\u003c/span\u003e\n\n\u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 用户定义的控制器\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003eclass\u003c/span\u003e \u003cspan class=\"pl-en\"\u003eMyWebController\u003c/span\u003e {\n\n    \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 定义端点函数\u003c/span\u003e\n    \u003cspan class=\"pl-en\"\u003eENDPOINT_BEGIN\u003c/span\u003e(API_GET, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e/\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, root) { \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 注册get请求, 接收`/`路径请求\u003c/span\u003e\n        \u003cspan class=\"pl-c1\"\u003eRESPONSE_DATA\u003c/span\u003e( \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 响应数据\u003c/span\u003e\n            \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e, \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 状态码\u003c/span\u003e\n            \u003cspan class=\"pl-k\"\u003eco_await\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003eHX::STL::utils::FileUtils::asyncGetFileContent\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eindex.html\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e), \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e (body数据) 异步(协程)读取文件\u003c/span\u003e\n            \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003etext/html\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eUTF-8\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e (响应类型), 以及响应编码\u003c/span\u003e\n        );\n        \u003cspan class=\"pl-k\"\u003eco_return\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e; \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 注意, 端点函数是协程, 得使用 co_return 而不是return (返回值是 bool)\u003c/span\u003e\n                        \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e bool 的意思是是否复用连接 (HTTP/1.1 是推荐复用连接的)\u003c/span\u003e\n    } ENDPOINT_END;\n\n    \u003cspan class=\"pl-en\"\u003eENDPOINT_BEGIN\u003c/span\u003e(API_GET, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e/favicon.ico\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, faviconIco) {\n        \u003cspan class=\"pl-c1\"\u003eRESPONSE_DATA\u003c/span\u003e(\n            \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e, \n            \u003cspan class=\"pl-k\"\u003eco_await\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003eHX::STL::utils::FileUtils::asyncGetFileContent\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003efavicon.ico\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e),\n            \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eimage/x-icon\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 响应编码 可以不写\u003c/span\u003e\n        );\n        \u003cspan class=\"pl-k\"\u003eco_return\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e;\n    } ENDPOINT_END;\n\n    \u003cspan class=\"pl-en\"\u003eENDPOINT_BEGIN\u003c/span\u003e(API_GET, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e/files/**\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, files) {\n        \u003cspan class=\"pl-c1\"\u003ePARSE_MULTI_LEVEL_PARAM\u003c/span\u003e(path);\n        \u003cspan class=\"pl-c1\"\u003eRESPONSE_STATUS\u003c/span\u003e(\u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e).\u003cspan class=\"pl-c1\"\u003esetContentType\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003etext/html\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eUTF-8\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e)\n                            .\u003cspan class=\"pl-c1\"\u003esetBodyData\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u0026lt;h1\u0026gt; files URL is \u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e + path + \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u0026lt;/h1\u0026gt;\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e); \n        \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 支持直接在端点里面响应 (记得co_await)\u003c/span\u003e\n        \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 响应后, 不会再次在 ConnectionHandler 中再次响应!\u003c/span\u003e\n        \u003cspan class=\"pl-k\"\u003eco_await\u003c/span\u003e io.\u003cspan class=\"pl-c1\"\u003esendResponse\u003c/span\u003e(); \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 立即发送响应\u003c/span\u003e\n        \u003cspan class=\"pl-k\"\u003eco_return\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e;\n    } ENDPOINT_END;\n\n    \u003cspan class=\"pl-en\"\u003eENDPOINT_BEGIN\u003c/span\u003e(API_GET, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e/home/{id}/{name}\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, getIdAndNameByHome) {\n        START_PARSE_PATH_PARAMS; \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 开始解析请求路径参数\u003c/span\u003e\n        \u003cspan class=\"pl-c1\"\u003ePARSE_PARAM\u003c/span\u003e(\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003eu_int32_t\u003c/span\u003e, id, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e); \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 解析第一个路径参数{id}, 解析为 u_int32_t类型, 命名为 id\u003c/span\u003e\n                                              \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 并且如果解析失败则不复用连接 (false)\u003c/span\u003e\n\n        \u003cspan class=\"pl-c1\"\u003ePARSE_PARAM\u003c/span\u003e(\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, std::string, name);    \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 解析第二个路径参数{name} (不写, 则默认复用连接)\u003c/span\u003e\n\n        \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 解析查询参数为键值对; ?awa=xxx 这种\u003c/span\u003e\n        \u003cspan class=\"pl-c1\"\u003eGET_PARSE_QUERY_PARAMETERS\u003c/span\u003e(queryMap);\n\n        \u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e (queryMap.\u003cspan class=\"pl-c1\"\u003ecount\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eloli\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e)) \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 如果解析到 ?loli=xxx\u003c/span\u003e\n            std::cout \u0026lt;\u0026lt; queryMap[\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eloli\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e] \u0026lt;\u0026lt; \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003cspan class=\"pl-cce\"\u003e\\n\u003c/span\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003c/span\u003e; \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e xxx 的值\u003c/span\u003e\n\n        \u003cspan class=\"pl-c1\"\u003eRESPONSE_DATA\u003c/span\u003e(\n            \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e, \n            \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u0026lt;h1\u0026gt; Home id 是 \u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e + \u003cspan class=\"pl-c1\"\u003estd::to_string\u003c/span\u003e(*id) + \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e, 而名字是 \u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \n            + *name + \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u0026lt;/h1\u0026gt;\u0026lt;h2\u0026gt; 来自 URL: \u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \n            + io.\u003cspan class=\"pl-c1\"\u003egetRequest\u003c/span\u003e().\u003cspan class=\"pl-c1\"\u003egetRequesPath\u003c/span\u003e()  + \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e 的解析\u0026lt;/h2\u0026gt;\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 默认`ENDPOINT_BEGIN`会传入 const HX::web::server::IO\u0026lt;\u0026gt;\u0026amp; io, 您可以对其进行更细致的操作\u003c/span\u003e\n            \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003etext/html\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eUTF-8\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n        );\n        \u003cspan class=\"pl-k\"\u003eco_return\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e;\n    } ENDPOINT_END;\n\n\u003cspan class=\"pl-k\"\u003epublic:\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 控制器成员函数 (请写成`static`方法)\u003c/span\u003e\n    \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e todo...\u003c/span\u003e\n};\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e绑定控制器到全局路由\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight highlight-source-c++ notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#include \u0026lt;HXWeb/HXApiHelper.h\u0026gt; // 宏所在头文件\n\nROUTER_BIND(MyWebController); // 这个类在上面声明过了\"\u003e\u003cpre\u003e#\u003cspan class=\"pl-k\"\u003einclude\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\u0026lt;\u003c/span\u003eHXWeb/HXApiHelper.h\u003cspan class=\"pl-pds\"\u003e\u0026gt;\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 宏所在头文件\u003c/span\u003e\n\n\u003cspan class=\"pl-en\"\u003eROUTER_BIND\u003c/span\u003e(MyWebController); \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 这个类在上面声明过了\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e启动服务器, 并且监听 127.0.0.1:28205, 并且设置路由失败时候返回的界面\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e可选: 可以设置线程数和超时时间 | 每个线程独享一个\u003ccode\u003euring\u003c/code\u003e, 但是绑定同一个端口, 由操作系统进行负载均衡\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight highlight-source-c++ notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#include \u0026lt;HXWeb/HXApiHelper.h\u0026gt; // 宏所在头文件\n#include \u0026lt;HXWeb/server/Server.h\u0026gt;\n\nint main() {\n    chdir(\u0026quot;../static\u0026quot;);\n    setlocale(LC_ALL, \u0026quot;zh_CN.UTF-8\u0026quot;);\n    ROUTER_BIND(WSChatController);\n    ERROR_ENDPOINT_BEGIN { // 自定义: 设置路由失败时候返回的界面\n        RESPONSE_DATA(\n            404,\n            \u0026quot;\u0026lt;!DOCTYPE html\u0026gt;\u0026lt;html\u0026gt;\u0026lt;head\u0026gt;\u0026lt;meta charset=UTF-8\u0026gt;\u0026lt;title\u0026gt;404 Not Found\u0026lt;/title\u0026gt;\u0026lt;style\u0026gt;body{font-family:Arial,sans-serif;text-align:center;padding:50px;background-color:#f4f4f4}h1{font-size:100px;margin:0;color:#333}p{font-size:24px;color:red}\u0026lt;/style\u0026gt;\u0026lt;body\u0026gt;\u0026lt;h1\u0026gt;404\u0026lt;/h1\u0026gt;\u0026lt;p\u0026gt;Not Found\u0026lt;/p\u0026gt;\u0026lt;hr/\u0026gt;\u0026lt;p\u0026gt;HXNet\u0026lt;/p\u0026gt;\u0026quot;,\n            \u0026quot;text/html\u0026quot;, \u0026quot;UTF-8\u0026quot;\n        );\n        co_return false;\n    } ERROR_ENDPOINT_END;\n\n    // 启动Http服务 [阻塞于此]\n    HX::web::server::Server::startHttp(\u0026quot;127.0.0.1\u0026quot;, \u0026quot;28205\u0026quot;, 16 /*可选 线程数(互不相关)*/, 10s /*可选 超时时间*/);\n\n    // 或者, 启动Https服务 [阻塞于此], 需要提供证书和密钥\n    HX::web::server::Server::startHttps(\u0026quot;127.0.0.1\u0026quot;, \u0026quot;28205\u0026quot;, \u0026quot;certs/cert.pem\u0026quot;, \u0026quot;certs/key.pem\u0026quot;);\n    return 0;\n}\"\u003e\u003cpre\u003e#\u003cspan class=\"pl-k\"\u003einclude\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\u0026lt;\u003c/span\u003eHXWeb/HXApiHelper.h\u003cspan class=\"pl-pds\"\u003e\u0026gt;\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 宏所在头文件\u003c/span\u003e\n#\u003cspan class=\"pl-k\"\u003einclude\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\u0026lt;\u003c/span\u003eHXWeb/server/Server.h\u003cspan class=\"pl-pds\"\u003e\u0026gt;\u003c/span\u003e\u003c/span\u003e\n\n\u003cspan class=\"pl-k\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-en\"\u003emain\u003c/span\u003e() {\n    \u003cspan class=\"pl-c1\"\u003echdir\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e../static\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e);\n    \u003cspan class=\"pl-c1\"\u003esetlocale\u003c/span\u003e(LC_ALL, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003ezh_CN.UTF-8\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e);\n    \u003cspan class=\"pl-c1\"\u003eROUTER_BIND\u003c/span\u003e(WSChatController);\n    ERROR_ENDPOINT_BEGIN { \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 自定义: 设置路由失败时候返回的界面\u003c/span\u003e\n        \u003cspan class=\"pl-c1\"\u003eRESPONSE_DATA\u003c/span\u003e(\n            \u003cspan class=\"pl-c1\"\u003e404\u003c/span\u003e,\n            \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u0026lt;!DOCTYPE html\u0026gt;\u0026lt;html\u0026gt;\u0026lt;head\u0026gt;\u0026lt;meta charset=UTF-8\u0026gt;\u0026lt;title\u0026gt;404 Not Found\u0026lt;/title\u0026gt;\u0026lt;style\u0026gt;body{font-family:Arial,sans-serif;text-align:center;padding:50px;background-color:#f4f4f4}h1{font-size:100px;margin:0;color:#333}p{font-size:24px;color:red}\u0026lt;/style\u0026gt;\u0026lt;body\u0026gt;\u0026lt;h1\u0026gt;404\u0026lt;/h1\u0026gt;\u0026lt;p\u0026gt;Not Found\u0026lt;/p\u0026gt;\u0026lt;hr/\u0026gt;\u0026lt;p\u0026gt;HXNet\u0026lt;/p\u0026gt;\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e,\n            \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003etext/html\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003eUTF-8\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n        );\n        \u003cspan class=\"pl-k\"\u003eco_return\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e;\n    } ERROR_ENDPOINT_END;\n\n    \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 启动Http服务 [阻塞于此]\u003c/span\u003e\n    \u003cspan class=\"pl-c1\"\u003eHX::web::server::Server::startHttp\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e127.0.0.1\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e28205\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e16\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e可选 线程数(互不相关)\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/span\u003e, 10s \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e可选 超时时间\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/span\u003e);\n\n    \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e//\u003c/span\u003e 或者, 启动Https服务 [阻塞于此], 需要提供证书和密钥\u003c/span\u003e\n    \u003cspan class=\"pl-c1\"\u003eHX::web::server::Server::startHttps\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e127.0.0.1\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e28205\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003ecerts/cert.pem\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003ecerts/key.pem\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e);\n    \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e;\n}\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e相关依赖\u003c/h2\u003e\u003ca id=\"user-content-相关依赖\" class=\"anchor\" aria-label=\"Permalink: 相关依赖\" href=\"#相关依赖\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e依赖库\u003c/th\u003e\n\u003cth\u003e说明\u003c/th\u003e\n\u003cth\u003e备注\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eliburing\u003c/td\u003e\n\u003ctd\u003eio_uring的封装\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/axboe/liburing\"\u003ehttps://github.com/axboe/liburing\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ehashlib\u003c/td\u003e\n\u003ctd\u003e用于\u003ccode\u003eWebSocket\u003c/code\u003e构造\u003ccode\u003eSHA-1\u003c/code\u003e信息摘要; 以及进行\u003ccode\u003eBase64\u003c/code\u003e编码\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://create.stephan-brumme.com/hash-library/\" rel=\"nofollow\"\u003ehttps://create.stephan-brumme.com/hash-library/\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOpenSSL 3.3.1\u003c/td\u003e\n\u003ctd\u003e用于https的证书/握手\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/openssl/openssl\"\u003ehttps://github.com/openssl/openssl\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e代码规范\u003c/h2\u003e\u003ca id=\"user-content-代码规范\" class=\"anchor\" aria-label=\"Permalink: 代码规范\" href=\"#代码规范\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003e--\u0026gt; \u003ca href=\"/HengXin666/HXNet/blob/main/documents/CodingStandards/CppStyle.md\"\u003eC++ 编码规范\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e开发计划\u003c/h2\u003e\u003ca id=\"user-content-开发计划\" class=\"anchor\" aria-label=\"Permalink: 开发计划\" href=\"#开发计划\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003e--\u0026gt; \u003ca href=\"/HengXin666/HXNet/blob/main/documents/DevelopmentPlan.md\"\u003e开发计划\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e开发日志\u003c/h2\u003e\u003ca id=\"user-content-开发日志\" class=\"anchor\" aria-label=\"Permalink: 开发日志\" href=\"#开发日志\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003e--\u0026gt; \u003ca href=\"/HengXin666/HXNet/blob/main/documents/DevelopmentLog.md\"\u003e开发日志\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e性能测试\u003c/h2\u003e\u003ca id=\"user-content-性能测试\" class=\"anchor\" aria-label=\"Permalink: 性能测试\" href=\"#性能测试\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-alert markdown-alert-tip\" dir=\"auto\"\u003e\u003cp class=\"markdown-alert-title\" dir=\"auto\"\u003e\u003csvg class=\"octicon octicon-light-bulb mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z\"\u003e\u003c/path\u003e\u003c/svg\u003eTip\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e协程版本: (基准: 别人22w/s的并发的程序在我这里一样的参数也就3w+/s..)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# 读写 index.html\n╰─ wrk -c1000 -d15s http://localhost:28205/\nRunning 15s test @ http://localhost:28205/\n  2 threads and 1000 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency    10.91ms    5.76ms  73.87ms   77.52%\n    Req/Sec    38.43k     8.84k   67.78k    69.86%\n  1137056 requests in 15.06s, 3.53GB read\nRequests/sec:  75521.83\nTransfer/sec:    239.91MB\n\n# 没有文件读写\n╰─ wrk -c1000 -d15s http://localhost:28205/home/123/123\nRunning 15s test @ http://localhost:28205/home/123/123\n  2 threads and 1000 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency     5.30ms    3.60ms  40.93ms   76.85%\n    Req/Sec    71.23k    22.11k  132.67k    68.15%\n  2097727 requests in 15.09s, 412.11MB read\nRequests/sec: 139024.19\nTransfer/sec:     27.31MB\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e 读写 index.html\u003c/span\u003e\n╰─ wrk -c1000 -d15s http://localhost:28205/\nRunning 15s \u003cspan class=\"pl-c1\"\u003etest\u003c/span\u003e @ http://localhost:28205/\n  2 threads and 1000 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency    10.91ms    5.76ms  73.87ms   77.52%\n    Req/Sec    38.43k     8.84k   67.78k    69.86%\n  1137056 requests \u003cspan class=\"pl-k\"\u003ein\u003c/span\u003e 15.06s, 3.53GB \u003cspan class=\"pl-c1\"\u003eread\u003c/span\u003e\nRequests/sec:  75521.83\nTransfer/sec:    239.91MB\n\n\u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e 没有文件读写\u003c/span\u003e\n╰─ wrk -c1000 -d15s http://localhost:28205/home/123/123\nRunning 15s \u003cspan class=\"pl-c1\"\u003etest\u003c/span\u003e @ http://localhost:28205/home/123/123\n  2 threads and 1000 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency     5.30ms    3.60ms  40.93ms   76.85%\n    Req/Sec    71.23k    22.11k  132.67k    68.15%\n  2097727 requests \u003cspan class=\"pl-k\"\u003ein\u003c/span\u003e 15.09s, 412.11MB \u003cspan class=\"pl-c1\"\u003eread\u003c/span\u003e\nRequests/sec: 139024.19\nTransfer/sec:     27.31MB\u003c/pre\u003e\u003c/div\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"HXNet","anchor":"hxnet","htmlText":"HXNet"},{"level":2,"text":"构建要求","anchor":"构建要求","htmlText":"构建要求"},{"level":2,"text":"快速开始","anchor":"快速开始","htmlText":"快速开始"},{"level":2,"text":"相关依赖","anchor":"相关依赖","htmlText":"相关依赖"},{"level":2,"text":"代码规范","anchor":"代码规范","htmlText":"代码规范"},{"level":2,"text":"开发计划","anchor":"开发计划","htmlText":"开发计划"},{"level":2,"text":"开发日志","anchor":"开发日志","htmlText":"开发日志"},{"level":2,"text":"性能测试","anchor":"性能测试","htmlText":"性能测试"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FHengXin666%2FHXNet"}},{"displayName":"LICENSE","repoName":"HXNet","refName":"main","path":"LICENSE","preferredFileType":"license","tabName":"Apache-2.0","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FHengXin666%2FHXNet"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-1583894afd38.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-03b87d52cf57.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"overview_shared_code_dropdown_button":false,"react_blob_overlay":false,"copilot_conversational_ux_embedding_update":false,"copilot_smell_icebreaker_ux":true,"copilot_workspace":false}}}}</script>
                        <div data-target="react-partial.reactRoot">
                          <style data-styled="true" data-styled-version="5.3.6">
                            .izjvBm {
                              margin-top: 16px;
                              margin-bottom: 16px;
                            }

                            /*!sc*/
                            .rPQgy {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: column;
                              -ms-flex-direction: column;
                              flex-direction: column;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                            }

                            /*!sc*/
                            .eUMEDg {
                              margin-bottom: 0;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: column;
                              -ms-flex-direction: column;
                              flex-direction: column;
                              row-gap: 16px;
                            }

                            /*!sc*/
                            .eLcVee {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              -webkit-box-flex: 1;
                              -webkit-flex-grow: 1;
                              -ms-flex-positive: 1;
                              flex-grow: 1;
                              padding-bottom: 16px;
                              padding-top: 8px;
                            }

                            /*!sc*/
                            .hsfLlq {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: row;
                              -ms-flex-direction: row;
                              flex-direction: row;
                              gap: 8px;
                            }

                            /*!sc*/
                            @media screen and (max-width:320px) {
                              .hsfLlq {
                                -webkit-box-flex: 1;
                                -webkit-flex-grow: 1;
                                -ms-flex-positive: 1;
                                flex-grow: 1;
                              }
                            }

                            /*!sc*/
                            .gpKoUz {
                              position: relative;
                            }

                            /*!sc*/
                            @media screen and (max-width:380px) {
                              .gpKoUz .ref-selector-button-text-container {
                                max-width: 80px;
                              }
                            }

                            /*!sc*/
                            @media screen and (max-width:320px) {
                              .gpKoUz {
                                -webkit-box-flex: 1;
                                -webkit-flex-grow: 1;
                                -ms-flex-positive: 1;
                                flex-grow: 1;
                              }

                              .gpKoUz .overview-ref-selector {
                                width: 100%;
                              }

                              .gpKoUz .overview-ref-selector>span {
                                display: -webkit-box;
                                display: -webkit-flex;
                                display: -ms-flexbox;
                                display: flex;
                                -webkit-box-pack: start;
                                -webkit-justify-content: flex-start;
                                -ms-flex-pack: start;
                                justify-content: flex-start;
                              }

                              .gpKoUz .overview-ref-selector>span>span[data-component="text"] {
                                -webkit-box-flex: 1;
                                -webkit-flex-grow: 1;
                                -ms-flex-positive: 1;
                                flex-grow: 1;
                              }
                            }

                            /*!sc*/
                            .kkrdEu {
                              -webkit-box-pack: center;
                              -webkit-justify-content: center;
                              -ms-flex-pack: center;
                              justify-content: center;
                            }

                            /*!sc*/
                            .bKgizp {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              width: 100%;
                            }

                            /*!sc*/
                            .iPGYsi {
                              margin-right: 4px;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .caeYDk {
                              font-size: 14px;
                              min-width: 0;
                              overflow: hidden;
                              text-overflow: ellipsis;
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .trpoQ {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              pointer-events: none;
                            }

                            /*!sc*/
                            .laYubZ {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                            }

                            /*!sc*/
                            @media screen and (max-width:1079px) {
                              .laYubZ {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .swnaL {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                            }

                            /*!sc*/
                            @media screen and (min-width:1080px) {
                              .swnaL {
                                display: none;
                              }
                            }

                            /*!sc*/
                            @media screen and (max-width:543px) {
                              .swnaL {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .bWpuBf {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              padding-left: 8px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .grHjNb {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              gap: 8px;
                            }

                            /*!sc*/
                            @media screen and (max-width:543px) {
                              .grHjNb {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .dXTsqj {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                            }

                            /*!sc*/
                            @media screen and (max-width:1011px) {
                              .dXTsqj {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .dCOrmu {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                            }

                            /*!sc*/
                            @media screen and (min-width:1012px) {
                              .dCOrmu {
                                display: none;
                              }
                            }

                            /*!sc*/
                            @media screen and (max-width:544px) {
                              .bVvbgP {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .bNDvfp {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                            }

                            /*!sc*/
                            @media screen and (min-width:544px) {
                              .bNDvfp {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .yfPnm {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: column;
                              -ms-flex-direction: column;
                              flex-direction: column;
                              gap: 16px;
                            }

                            /*!sc*/
                            .cAQuiW {
                              width: 100%;
                              border-collapse: separate;
                              border-spacing: 0;
                              border: 1px solid;
                              border-color: var(--borderColor-default, var(--color-border-default, #d0d7de));
                              border-radius: 6px;
                              table-layout: fixed;
                              overflow: unset;
                            }

                            /*!sc*/
                            .iiUlLN {
                              height: 0px;
                              line-height: 0px;
                            }

                            /*!sc*/
                            .iiUlLN tr {
                              height: 0px;
                              font-size: 0px;
                            }

                            /*!sc*/
                            .jmggSN {
                              padding: 16px;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                              font-size: 12px;
                              text-align: left;
                              height: 40px;
                            }

                            /*!sc*/
                            .jmggSN th {
                              padding-left: 16px;
                              background-color: var(--bgColor-muted, var(--color-canvas-subtle, #f6f8fa));
                            }

                            /*!sc*/
                            .kvYunM {
                              width: 100%;
                              border-top-left-radius: 6px;
                            }

                            /*!sc*/
                            @media screen and (min-width:544px) {
                              .kvYunM {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .hrLuxA {
                              width: 40%;
                              border-top-left-radius: 6px;
                            }

                            /*!sc*/
                            @media screen and (max-width:543px) {
                              .hrLuxA {
                                display: none;
                              }
                            }

                            /*!sc*/
                            .cuEKae {
                              text-align: right;
                              padding-right: 16px;
                              width: 136px;
                              border-top-right-radius: 6px;
                            }

                            /*!sc*/
                            .jEbBOT {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                              font-size: 12px;
                              height: 40px;
                            }

                            /*!sc*/
                            .brJRqk {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: row;
                              -ms-flex-direction: row;
                              flex-direction: row;
                              -webkit-flex-wrap: wrap;
                              -ms-flex-wrap: wrap;
                              flex-wrap: wrap;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              gap: 8px;
                              min-width: 273px;
                              padding: 8px;
                            }

                            /*!sc*/
                            @media screen and (min-width:544px) {
                              .brJRqk {
                                -webkit-flex-wrap: nowrap;
                                -ms-flex-wrap: nowrap;
                                flex-wrap: nowrap;
                              }
                            }

                            /*!sc*/
                            .epsqEd {
                              text-align: center;
                              vertical-align: center;
                              height: 40px;
                              border-top: 1px solid;
                              border-color: var(--borderColor-default, var(--color-border-default, #d0d7de));
                            }

                            /*!sc*/
                            .ldpruc {
                              border-top: 1px solid var(--borderColor-default, var(--color-border-default));
                              cursor: pointer;
                            }

                            /*!sc*/
                            .ehcSsh {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-box-flex: 1;
                              -webkit-flex-grow: 1;
                              -ms-flex-positive: 1;
                              flex-grow: 1;
                              gap: 16px;
                            }

                            /*!sc*/
                            .iGmlUb {
                              border: 1px solid;
                              border-color: var(--borderColor-default, var(--color-border-default, #d0d7de));
                              border-radius: 6px;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: column;
                              -ms-flex-direction: column;
                              flex-direction: column;
                              -webkit-box-flex: 1;
                              -webkit-flex-grow: 1;
                              -ms-flex-positive: 1;
                              flex-grow: 1;
                            }

                            /*!sc*/
                            @media screen and (max-width:543px) {
                              .iGmlUb {
                                margin-left: -16px;
                                margin-right: -16px;
                                max-width: calc(100% + 32px);
                              }
                            }

                            /*!sc*/
                            @media screen and (min-width:544px) {
                              .iGmlUb {
                                max-width: 100%;
                              }
                            }

                            /*!sc*/
                            .iRQGXA {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              border-bottom: 1px solid;
                              border-bottom-color: var(--borderColor-default, var(--color-border-default, #d0d7de));
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              padding-right: 8px;
                              position: -webkit-sticky;
                              position: sticky;
                              top: 0;
                              background-color: var(--bgColor-default, var(--color-canvas-default, #ffffff));
                              z-index: 1;
                              border-top-left-radius: 6px;
                              border-top-right-radius: 6px;
                            }

                            /*!sc*/
                            .gwuIGu {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-flex-direction: column;
                              -ms-flex-direction: column;
                              flex-direction: column;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                            }

                            /*!sc*/
                            .bJMeLZ {
                              padding: 32px;
                              overflow: auto;
                            }

                            /*!sc*/
                            data-styled.g1[id="Box-sc-g0xbh4-0"] {
                              content: "izjvBm,rPQgy,eUMEDg,eLcVee,hsfLlq,gpKoUz,kkrdEu,bKgizp,iPGYsi,caeYDk,trpoQ,laYubZ,swnaL,bWpuBf,grHjNb,dXTsqj,dCOrmu,bVvbgP,bNDvfp,yfPnm,cAQuiW,iiUlLN,jmggSN,kvYunM,hrLuxA,cuEKae,jEbBOT,brJRqk,epsqEd,ldpruc,ehcSsh,iGmlUb,iRQGXA,gwuIGu,bJMeLZ,"
                            }

                            /*!sc*/
                            .fpGZrB {
                              font-weight: 600;
                              font-size: 32px;
                              margin: 0;
                            }

                            /*!sc*/
                            .fpGZrB:where([data-variant='large']) {
                              font: var(--text-title-shorthand-large, 600 32px / 1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji");
                            }

                            /*!sc*/
                            .fpGZrB:where([data-variant='medium']) {
                              font: var(--text-title-shorthand-medium, 600 20px / 1.6 -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji");
                            }

                            /*!sc*/
                            .fpGZrB:where([data-variant='small']) {
                              font: var(--text-title-shorthand-small, 600 16px / 1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji");
                            }

                            /*!sc*/
                            data-styled.g2[id="Heading__StyledHeading-sc-1c1dgg0-0"] {
                              content: "fpGZrB,"
                            }

                            /*!sc*/
                            .jwBfae {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: var(--button-default-borderColor-rest, var(--button-default-borderColor-rest, var(--color-btn-border, rgba(31, 35, 40, 0.15))));
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                              background-color: var(--button-default-bgColor-rest, var(--color-btn-bg, #f6f8fa));
                              box-shadow: var(--button-default-shadow-resting, var(--color-btn-shadow, 0 1px 0 rgba(31, 35, 40, 0.04))), var(--button-default-shadow-inset, var(--color-btn-inset-shadow, inset 0 1px 0 rgba(255, 255, 255, 0.25)));
                            }

                            /*!sc*/
                            .jwBfae:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .jwBfae:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .jwBfae:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .jwBfae[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .jwBfae[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .jwBfae:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .jwBfae:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .jwBfae[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .jwBfae:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                              border-color: var(--button-default-borderColor-disabled, var(--button-default-borderColor-rest, var(--color-btn-border, rgba(31, 35, 40, 0.15))));
                              background-color: var(--button-default-bgColor-disabled, var(--control-bgColor-disabled, var(--color-input-disabled-bg, rgba(175, 184, 193, 0.2))));
                            }

                            /*!sc*/
                            .jwBfae:disabled [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .jwBfae:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .jwBfae [data-component=ButtonCounter] {
                              font-size: 12px;
                              background-color: var(--buttonCounter-default-bgColor-rest, var(--color-btn-counter-bg, rgba(31, 35, 40, 0.08)));
                            }

                            /*!sc*/
                            .jwBfae[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .jwBfae[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .jwBfae[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .jwBfae[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .jwBfae[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .jwBfae[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .jwBfae[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .jwBfae[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .jwBfae[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .jwBfae[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .jwBfae[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .jwBfae[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .jwBfae[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .jwBfae [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                            }

                            /*!sc*/
                            .jwBfae [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .jwBfae [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .jwBfae [data-component="trailingAction"] {
                              margin-right: -4px;
                            }

                            /*!sc*/
                            .jwBfae [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .jwBfae [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .jwBfae [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .jwBfae [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .jwBfae:hover:not([disabled]):not([data-inactive]) {
                              background-color: var(--button-default-bgColor-hover, var(--color-btn-hover-bg, #f3f4f6));
                              border-color: var(--button-default-borderColor-hover, var(--button-default-borderColor-hover, var(--color-btn-hover-border, rgba(31, 35, 40, 0.15))));
                            }

                            /*!sc*/
                            .jwBfae:active:not([disabled]):not([data-inactive]) {
                              background-color: var(--button-default-bgColor-active, var(--color-btn-active-bg, hsla(220, 14%, 93%, 1)));
                              border-color: var(--button-default-borderColor-active, var(--button-default-borderColor-active, var(--color-btn-active-border, rgba(31, 35, 40, 0.15))));
                            }

                            /*!sc*/
                            .jwBfae[aria-expanded=true] {
                              background-color: var(--button-default-bgColor-active, var(--color-btn-active-bg, hsla(220, 14%, 93%, 1)));
                              border-color: var(--button-default-borderColor-active, var(--button-default-borderColor-active, var(--color-btn-active-border, rgba(31, 35, 40, 0.15))));
                            }

                            /*!sc*/
                            .jwBfae [data-component="leadingVisual"],
                            .jwBfae [data-component="trailingVisual"],
                            .jwBfae [data-component="trailingAction"] {
                              color: var(--button-color, var(--fgColor-muted, var(--color-fg-muted, #656d76)));
                            }

                            /*!sc*/
                            .jwBfae[data-component="IconButton"][data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .jwBfae {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              min-width: 0;
                            }

                            /*!sc*/
                            .jwBfae svg {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .jwBfae>span {
                              width: inherit;
                            }

                            /*!sc*/
                            .eybzoG {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: transparent;
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                              background-color: transparent;
                              box-shadow: none;
                            }

                            /*!sc*/
                            .eybzoG:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .eybzoG:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .eybzoG:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .eybzoG[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .eybzoG[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .eybzoG:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .eybzoG:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .eybzoG[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .eybzoG:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .eybzoG:disabled [data-component=ButtonCounter],
                            .eybzoG:disabled [data-component="leadingVisual"],
                            .eybzoG:disabled [data-component="trailingAction"] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .eybzoG:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .eybzoG [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .eybzoG[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .eybzoG[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .eybzoG[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .eybzoG[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .eybzoG[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .eybzoG[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .eybzoG[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .eybzoG[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .eybzoG[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .eybzoG[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .eybzoG[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .eybzoG[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .eybzoG[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .eybzoG [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .eybzoG [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .eybzoG [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .eybzoG [data-component="trailingAction"] {
                              margin-right: -4px;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .eybzoG [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .eybzoG [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .eybzoG [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .eybzoG [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .eybzoG:hover:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-hover, var(--color-action-list-item-default-hover-bg, rgba(208, 215, 222, 0.32)));
                            }

                            /*!sc*/
                            .eybzoG:active:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-active, var(--color-action-list-item-default-active-bg, rgba(208, 215, 222, 0.48)));
                            }

                            /*!sc*/
                            .eybzoG[aria-expanded=true] {
                              background-color: var(--control-transparent-bgColor-selected, var(--color-action-list-item-default-selected-bg, rgba(208, 215, 222, 0.24)));
                            }

                            /*!sc*/
                            .eybzoG[data-component="IconButton"][data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .eybzoG[data-no-visuals] {
                              color: var(--fgColor-accent, var(--color-accent-fg, #0969da));
                            }

                            /*!sc*/
                            .eybzoG:has([data-component="ButtonCounter"]) {
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                            }

                            /*!sc*/
                            .eybzoG:disabled[data-no-visuals] {
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .eybzoG:disabled[data-no-visuals] [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            .eybzoG {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                              padding-left: 4px;
                              padding-right: 4px;
                            }

                            /*!sc*/
                            .eybzoG span[data-component="leadingVisual"] {
                              margin-right: 4px !important;
                            }

                            /*!sc*/
                            .kPKwzC {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: transparent;
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                              background-color: transparent;
                              box-shadow: none;
                            }

                            /*!sc*/
                            .kPKwzC:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .kPKwzC:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .kPKwzC:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .kPKwzC[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .kPKwzC[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .kPKwzC:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .kPKwzC:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .kPKwzC[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .kPKwzC:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .kPKwzC:disabled [data-component=ButtonCounter],
                            .kPKwzC:disabled [data-component="leadingVisual"],
                            .kPKwzC:disabled [data-component="trailingAction"] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .kPKwzC:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .kPKwzC [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .kPKwzC[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .kPKwzC[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .kPKwzC[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .kPKwzC[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .kPKwzC[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .kPKwzC[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .kPKwzC[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .kPKwzC [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .kPKwzC [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .kPKwzC [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .kPKwzC [data-component="trailingAction"] {
                              margin-right: -4px;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .kPKwzC [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .kPKwzC [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .kPKwzC [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .kPKwzC [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .kPKwzC:hover:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-hover, var(--color-action-list-item-default-hover-bg, rgba(208, 215, 222, 0.32)));
                            }

                            /*!sc*/
                            .kPKwzC:active:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-active, var(--color-action-list-item-default-active-bg, rgba(208, 215, 222, 0.48)));
                            }

                            /*!sc*/
                            .kPKwzC[aria-expanded=true] {
                              background-color: var(--control-transparent-bgColor-selected, var(--color-action-list-item-default-selected-bg, rgba(208, 215, 222, 0.24)));
                            }

                            /*!sc*/
                            .kPKwzC[data-component="IconButton"][data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .kPKwzC[data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .kPKwzC:has([data-component="ButtonCounter"]) {
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                            }

                            /*!sc*/
                            .kPKwzC:disabled[data-no-visuals] {
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .kPKwzC:disabled[data-no-visuals] [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            .feqCqy {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: var(--button-default-borderColor-rest, var(--button-default-borderColor-rest, var(--color-btn-border, rgba(31, 35, 40, 0.15))));
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                              background-color: var(--button-default-bgColor-rest, var(--color-btn-bg, #f6f8fa));
                              box-shadow: var(--button-default-shadow-resting, var(--color-btn-shadow, 0 1px 0 rgba(31, 35, 40, 0.04))), var(--button-default-shadow-inset, var(--color-btn-inset-shadow, inset 0 1px 0 rgba(255, 255, 255, 0.25)));
                            }

                            /*!sc*/
                            .feqCqy:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .feqCqy:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .feqCqy:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .feqCqy[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .feqCqy[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .feqCqy:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .feqCqy:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .feqCqy[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .feqCqy:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                              border-color: var(--button-default-borderColor-disabled, var(--button-default-borderColor-rest, var(--color-btn-border, rgba(31, 35, 40, 0.15))));
                              background-color: var(--button-default-bgColor-disabled, var(--control-bgColor-disabled, var(--color-input-disabled-bg, rgba(175, 184, 193, 0.2))));
                            }

                            /*!sc*/
                            .feqCqy:disabled [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .feqCqy:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .feqCqy [data-component=ButtonCounter] {
                              font-size: 12px;
                              background-color: var(--buttonCounter-default-bgColor-rest, var(--color-btn-counter-bg, rgba(31, 35, 40, 0.08)));
                            }

                            /*!sc*/
                            .feqCqy[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .feqCqy[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .feqCqy[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .feqCqy[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .feqCqy[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .feqCqy[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .feqCqy[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .feqCqy[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .feqCqy[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .feqCqy[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .feqCqy[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .feqCqy[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .feqCqy[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .feqCqy [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                            }

                            /*!sc*/
                            .feqCqy [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .feqCqy [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .feqCqy [data-component="trailingAction"] {
                              margin-right: -4px;
                            }

                            /*!sc*/
                            .feqCqy [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .feqCqy [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .feqCqy [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .feqCqy [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .feqCqy:hover:not([disabled]):not([data-inactive]) {
                              background-color: var(--button-default-bgColor-hover, var(--color-btn-hover-bg, #f3f4f6));
                              border-color: var(--button-default-borderColor-hover, var(--button-default-borderColor-hover, var(--color-btn-hover-border, rgba(31, 35, 40, 0.15))));
                            }

                            /*!sc*/
                            .feqCqy:active:not([disabled]):not([data-inactive]) {
                              background-color: var(--button-default-bgColor-active, var(--color-btn-active-bg, hsla(220, 14%, 93%, 1)));
                              border-color: var(--button-default-borderColor-active, var(--button-default-borderColor-active, var(--color-btn-active-border, rgba(31, 35, 40, 0.15))));
                            }

                            /*!sc*/
                            .feqCqy[aria-expanded=true] {
                              background-color: var(--button-default-bgColor-active, var(--color-btn-active-bg, hsla(220, 14%, 93%, 1)));
                              border-color: var(--button-default-borderColor-active, var(--button-default-borderColor-active, var(--color-btn-active-border, rgba(31, 35, 40, 0.15))));
                            }

                            /*!sc*/
                            .feqCqy [data-component="leadingVisual"],
                            .feqCqy [data-component="trailingVisual"],
                            .feqCqy [data-component="trailingAction"] {
                              color: var(--button-color, var(--fgColor-muted, var(--color-fg-muted, #656d76)));
                            }

                            /*!sc*/
                            .feqCqy[data-component="IconButton"][data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .dLirOd {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: var(--button-primary-borderColor-rest, var(--color-btn-primary-border, rgba(31, 35, 40, 0.15)));
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-primary-fgColor-rest, var(--color-btn-primary-text, #ffffff));
                              background-color: var(--button-primary-bgColor-rest, var(--color-btn-primary-bg, #1f883d));
                              box-shadow: var(--shadow-resting-small, var(--color-btn-primary-shadow, 0 1px 0 rgba(31, 35, 40, 0.1)));
                            }

                            /*!sc*/
                            .dLirOd:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .dLirOd:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .dLirOd:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .dLirOd[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .dLirOd[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .dLirOd:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .dLirOd:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .dLirOd[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .dLirOd:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--button-primary-fgColor-disabled, var(--color-btn-primary-disabled-text, rgba(255, 255, 255, 0.8)));
                              background-color: var(--button-primary-bgColor-disabled, var(--color-btn-primary-disabled-bg, #94d3a2));
                              border-color: var(--button-primary-borderColor-disabled, var(--color-btn-primary-disabled-border, rgba(31, 35, 40, 0.15)));
                            }

                            /*!sc*/
                            .dLirOd:disabled [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .dLirOd:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .dLirOd [data-component=ButtonCounter] {
                              font-size: 12px;
                              background-color: var(--buttonCounter-primary-bgColor-rest, var(--color-btn-primary-counter-bg, rgba(0, 45, 17, 0.2)));
                              color: var(--button-primary-fgColor-rest, var(--color-btn-primary-text, #ffffff));
                            }

                            /*!sc*/
                            .dLirOd[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .dLirOd[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .dLirOd[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .dLirOd[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .dLirOd[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .dLirOd[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .dLirOd[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .dLirOd[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .dLirOd[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .dLirOd[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .dLirOd[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .dLirOd[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .dLirOd[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .dLirOd [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                            }

                            /*!sc*/
                            .dLirOd [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .dLirOd [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .dLirOd [data-component="trailingAction"] {
                              margin-right: -4px;
                            }

                            /*!sc*/
                            .dLirOd [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .dLirOd [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .dLirOd [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .dLirOd [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .dLirOd:hover:not([disabled]):not([data-inactive]) {
                              color: btn.primary.hoverText;
                              background-color: var(--button-primary-bgColor-hover, var(--color-btn-primary-hover-bg, #1a7f37));
                            }

                            /*!sc*/
                            .dLirOd:focus:not([disabled]) {
                              box-shadow: inset 0 0 0 3px;
                            }

                            /*!sc*/
                            .dLirOd:focus-visible:not([disabled]) {
                              box-shadow: inset 0 0 0 3px;
                            }

                            /*!sc*/
                            .dLirOd:active:not([disabled]):not([data-inactive]) {
                              background-color: var(--button-primary-bgColor-active, var(--color-btn-primary-selected-bg, hsla(137, 66%, 28%, 1)));
                              box-shadow: var(--button-primary-shadow-selected, var(--color-btn-primary-selected-shadow, inset 0 1px 0 rgba(0, 45, 17, 0.2)));
                            }

                            /*!sc*/
                            .dLirOd[aria-expanded=true] {
                              background-color: var(--button-primary-bgColor-active, var(--color-btn-primary-selected-bg, hsla(137, 66%, 28%, 1)));
                              box-shadow: var(--button-primary-shadow-selected, var(--color-btn-primary-selected-shadow, inset 0 1px 0 rgba(0, 45, 17, 0.2)));
                            }

                            /*!sc*/
                            .dLirOd svg {
                              color: fg.primary;
                            }

                            /*!sc*/
                            .emYRmJ {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: transparent;
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                              background-color: transparent;
                              box-shadow: none;
                            }

                            /*!sc*/
                            .emYRmJ:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .emYRmJ:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .emYRmJ:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .emYRmJ[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .emYRmJ[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .emYRmJ:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .emYRmJ:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .emYRmJ[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .emYRmJ:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .emYRmJ:disabled [data-component=ButtonCounter],
                            .emYRmJ:disabled [data-component="leadingVisual"],
                            .emYRmJ:disabled [data-component="trailingAction"] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .emYRmJ:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .emYRmJ [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .emYRmJ[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .emYRmJ[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .emYRmJ[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .emYRmJ[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .emYRmJ[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .emYRmJ[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .emYRmJ[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .emYRmJ [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .emYRmJ [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .emYRmJ [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .emYRmJ [data-component="trailingAction"] {
                              margin-right: -4px;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .emYRmJ [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .emYRmJ [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .emYRmJ [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .emYRmJ [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .emYRmJ:hover:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-hover, var(--color-action-list-item-default-hover-bg, rgba(208, 215, 222, 0.32)));
                            }

                            /*!sc*/
                            .emYRmJ:active:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-active, var(--color-action-list-item-default-active-bg, rgba(208, 215, 222, 0.48)));
                            }

                            /*!sc*/
                            .emYRmJ[aria-expanded=true] {
                              background-color: var(--control-transparent-bgColor-selected, var(--color-action-list-item-default-selected-bg, rgba(208, 215, 222, 0.24)));
                            }

                            /*!sc*/
                            .emYRmJ[data-component="IconButton"][data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .emYRmJ[data-no-visuals] {
                              color: var(--fgColor-accent, var(--color-accent-fg, #0969da));
                            }

                            /*!sc*/
                            .emYRmJ:has([data-component="ButtonCounter"]) {
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                            }

                            /*!sc*/
                            .emYRmJ:disabled[data-no-visuals] {
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .emYRmJ:disabled[data-no-visuals] [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            .iNcPMC {
                              border-radius: 6px;
                              border: 1px solid;
                              border-color: transparent;
                              font-family: inherit;
                              font-weight: 500;
                              font-size: 14px;
                              cursor: pointer;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-align: center;
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-box-pack: justify;
                              -webkit-justify-content: space-between;
                              -ms-flex-pack: justify;
                              justify-content: space-between;
                              height: 32px;
                              padding: 0 12px;
                              gap: 8px;
                              min-width: -webkit-max-content;
                              min-width: -moz-max-content;
                              min-width: max-content;
                              -webkit-transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              transition: 80ms cubic-bezier(0.65, 0, 0.35, 1);
                              -webkit-transition-property: color, fill, background-color, border-color;
                              transition-property: color, fill, background-color, border-color;
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                              background-color: transparent;
                              box-shadow: none;
                            }

                            /*!sc*/
                            .iNcPMC:focus:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .iNcPMC:focus:not(:disabled):not(:focus-visible) {
                              outline: solid 1px transparent;
                            }

                            /*!sc*/
                            .iNcPMC:focus-visible:not(:disabled) {
                              box-shadow: none;
                              outline: 2px solid var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              outline-offset: -2px;
                            }

                            /*!sc*/
                            .iNcPMC[href] {
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                            }

                            /*!sc*/
                            .iNcPMC[href]:hover {
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            .iNcPMC:hover {
                              -webkit-transition-duration: 80ms;
                              transition-duration: 80ms;
                            }

                            /*!sc*/
                            .iNcPMC:active {
                              -webkit-transition: none;
                              transition: none;
                            }

                            /*!sc*/
                            .iNcPMC[data-inactive] {
                              cursor: auto;
                            }

                            /*!sc*/
                            .iNcPMC:disabled {
                              cursor: not-allowed;
                              box-shadow: none;
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .iNcPMC:disabled [data-component=ButtonCounter],
                            .iNcPMC:disabled [data-component="leadingVisual"],
                            .iNcPMC:disabled [data-component="trailingAction"] {
                              color: inherit;
                            }

                            /*!sc*/
                            @media (forced-colors:active) {
                              .iNcPMC:focus {
                                outline: solid 1px transparent;
                              }
                            }

                            /*!sc*/
                            .iNcPMC [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .iNcPMC[data-component=IconButton] {
                              display: inline-grid;
                              padding: unset;
                              place-content: center;
                              width: 32px;
                              min-width: unset;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="small"] {
                              padding: 0 8px;
                              height: 28px;
                              gap: 4px;
                              font-size: 12px;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="small"] [data-component="text"] {
                              line-height: calc(20 / 12);
                            }

                            /*!sc*/
                            .iNcPMC[data-size="small"] [data-component=ButtonCounter] {
                              font-size: 12px;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="small"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 4px;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="small"][data-component=IconButton] {
                              width: 28px;
                              padding: unset;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="large"] {
                              padding: 0 16px;
                              height: 40px;
                              gap: 8px;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="large"] [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .iNcPMC[data-size="large"][data-component=IconButton] {
                              width: 40px;
                              padding: unset;
                            }

                            /*!sc*/
                            .iNcPMC[data-block="block"] {
                              width: 100%;
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"] {
                              min-width: -webkit-fit-content;
                              min-width: -moz-fit-content;
                              min-width: fit-content;
                              height: unset;
                              min-height: var(--control-medium-size, 2rem);
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"] [data-component="buttonContent"] {
                              -webkit-flex: 1 1 auto;
                              -ms-flex: 1 1 auto;
                              flex: 1 1 auto;
                              -webkit-align-self: stretch;
                              -ms-flex-item-align: stretch;
                              align-self: stretch;
                              padding-block: calc(var(--control-medium-paddingBlock, 0.375rem) - 2px);
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"] [data-component="text"] {
                              white-space: unset;
                              word-break: break-word;
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"][data-size="small"] {
                              height: unset;
                              min-height: var(--control-small-size, 1.75rem);
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-small-paddingBlock, 0.25rem) - 2px);
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"][data-size="large"] {
                              height: unset;
                              min-height: var(--control-large-size, 2.5rem);
                              padding-inline: var(--control-large-paddingInline-spacious, 1rem);
                            }

                            /*!sc*/
                            .iNcPMC[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"] {
                              padding-block: calc(var(--control-large-paddingBlock, 0.625rem) - 2px);
                            }

                            /*!sc*/
                            .iNcPMC[data-inactive]:not([disabled]) {
                              background-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              border-color: var(--button-inactive-bgColor, var(--button-inactive-bgColor-rest, var(--color-btn-inactive-bg, #eaeef2)));
                              color: var(--button-inactive-fgColor, var(--button-inactive-fgColor-rest, var(--color-btn-inactive-text, #57606a)));
                            }

                            /*!sc*/
                            .iNcPMC[data-inactive]:not([disabled]):focus-visible {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .iNcPMC [data-component="leadingVisual"] {
                              grid-area: leadingVisual;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .iNcPMC [data-component="text"] {
                              grid-area: text;
                              line-height: calc(20/14);
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .iNcPMC [data-component="trailingVisual"] {
                              grid-area: trailingVisual;
                            }

                            /*!sc*/
                            .iNcPMC [data-component="trailingAction"] {
                              margin-right: -4px;
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .iNcPMC [data-component="buttonContent"] {
                              -webkit-flex: 1 0 auto;
                              -ms-flex: 1 0 auto;
                              flex: 1 0 auto;
                              display: grid;
                              grid-template-areas: "leadingVisual text trailingVisual";
                              grid-template-columns: min-content minmax(0, auto) min-content;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              -webkit-align-content: center;
                              -ms-flex-line-pack: center;
                              align-content: center;
                            }

                            /*!sc*/
                            .iNcPMC [data-component="buttonContent"]> :not(:last-child) {
                              margin-right: 8px;
                            }

                            /*!sc*/
                            .iNcPMC [data-component="loadingSpinner"] {
                              grid-area: text;
                              margin-right: 0px !important;
                              place-self: center;
                            }

                            /*!sc*/
                            .iNcPMC [data-component="loadingSpinner"]+[data-component="text"] {
                              visibility: hidden;
                            }

                            /*!sc*/
                            .iNcPMC:hover:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-hover, var(--color-action-list-item-default-hover-bg, rgba(208, 215, 222, 0.32)));
                            }

                            /*!sc*/
                            .iNcPMC:active:not([disabled]) {
                              background-color: var(--control-transparent-bgColor-active, var(--color-action-list-item-default-active-bg, rgba(208, 215, 222, 0.48)));
                            }

                            /*!sc*/
                            .iNcPMC[aria-expanded=true] {
                              background-color: var(--control-transparent-bgColor-selected, var(--color-action-list-item-default-selected-bg, rgba(208, 215, 222, 0.24)));
                            }

                            /*!sc*/
                            .iNcPMC[data-component="IconButton"][data-no-visuals] {
                              color: var(--fgColor-muted, var(--color-fg-muted, #656d76));
                            }

                            /*!sc*/
                            .iNcPMC[data-no-visuals] {
                              color: var(--fgColor-accent, var(--color-accent-fg, #0969da));
                            }

                            /*!sc*/
                            .iNcPMC:has([data-component="ButtonCounter"]) {
                              color: var(--button-default-fgColor-rest, var(--color-btn-text, #24292f));
                            }

                            /*!sc*/
                            .iNcPMC:disabled[data-no-visuals] {
                              color: var(--fgColor-disabled, var(--color-primer-fg-disabled, #8c959f));
                            }

                            /*!sc*/
                            .iNcPMC:disabled[data-no-visuals] [data-component=ButtonCounter] {
                              color: inherit;
                            }

                            /*!sc*/
                            .iNcPMC {
                              color: var(--fgColor-muted, var(--color-fg-subtle, #6e7781));
                              padding-left: 8px;
                              padding-right: 8px;
                            }

                            /*!sc*/
                            data-styled.g5[id="types__StyledButton-sc-ws60qy-0"] {
                              content: "jwBfae,eybzoG,kPKwzC,feqCqy,dLirOd,emYRmJ,iNcPMC,"
                            }

                            /*!sc*/
                            .rTZSs {
                              position: absolute;
                              width: 1px;
                              height: 1px;
                              padding: 0;
                              margin: -1px;
                              overflow: hidden;
                              -webkit-clip: rect(0, 0, 0, 0);
                              clip: rect(0, 0, 0, 0);
                              white-space: nowrap;
                              border-width: 0;
                            }

                            /*!sc*/
                            data-styled.g8[id="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0"] {
                              content: "rTZSs,"
                            }

                            /*!sc*/
                            .dheQRw {
                              color: var(--fgColor-accent, var(--color-accent-fg, #0969da));
                              -webkit-text-decoration: none;
                              text-decoration: none;
                            }

                            /*!sc*/
                            [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true'] {
                              -webkit-text-decoration: underline;
                              text-decoration: underline;
                            }

                            /*!sc*/
                            .dheQRw:hover {
                              -webkit-text-decoration: underline;
                              text-decoration: underline;
                            }

                            /*!sc*/
                            .dheQRw:is(button) {
                              display: inline-block;
                              padding: 0;
                              font-size: inherit;
                              white-space: nowrap;
                              cursor: pointer;
                              -webkit-user-select: none;
                              -moz-user-select: none;
                              -ms-user-select: none;
                              user-select: none;
                              background-color: transparent;
                              border: 0;
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                            }

                            /*!sc*/
                            data-styled.g11[id="Link__StyledLink-sc-14289xe-0"] {
                              content: "dheQRw,"
                            }

                            /*!sc*/
                            .gNgnVl {
                              position: relative;
                              display: inline-block;
                            }

                            /*!sc*/
                            .gNgnVl::after {
                              position: absolute;
                              z-index: 1000000;
                              display: none;
                              padding: 0.5em 0.75em;
                              font: normal normal 11px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
                              -webkit-font-smoothing: subpixel-antialiased;
                              color: var(--tooltip-fgColor, var(--fgColor-onEmphasis, var(--color-fg-on-emphasis, #ffffff)));
                              text-align: center;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              text-shadow: none;
                              text-transform: none;
                              -webkit-letter-spacing: normal;
                              -moz-letter-spacing: normal;
                              -ms-letter-spacing: normal;
                              letter-spacing: normal;
                              word-wrap: break-word;
                              white-space: pre;
                              pointer-events: none;
                              content: attr(aria-label);
                              background: var(--tooltip-bgColor, var(--bgColor-emphasis, var(--color-neutral-emphasis-plus, #24292f)));
                              border-radius: 6px;
                              opacity: 0;
                            }

                            /*!sc*/
                            @-webkit-keyframes tooltip-appear {
                              from {
                                opacity: 0;
                              }

                              to {
                                opacity: 1;
                              }
                            }

                            /*!sc*/
                            @keyframes tooltip-appear {
                              from {
                                opacity: 0;
                              }

                              to {
                                opacity: 1;
                              }
                            }

                            /*!sc*/
                            .gNgnVl:hover::after,
                            .gNgnVl:active::after,
                            .gNgnVl:focus::after,
                            .gNgnVl:focus-within::after {
                              display: inline-block;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              -webkit-animation-name: tooltip-appear;
                              animation-name: tooltip-appear;
                              -webkit-animation-duration: 0.1s;
                              animation-duration: 0.1s;
                              -webkit-animation-fill-mode: forwards;
                              animation-fill-mode: forwards;
                              -webkit-animation-timing-function: ease-in;
                              animation-timing-function: ease-in;
                              -webkit-animation-delay: 0s;
                              animation-delay: 0s;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-no-delay:hover::after,
                            .gNgnVl.tooltipped-no-delay:active::after,
                            .gNgnVl.tooltipped-no-delay:focus::after,
                            .gNgnVl.tooltipped-no-delay:focus-within::after {
                              -webkit-animation-delay: 0s;
                              animation-delay: 0s;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-multiline:hover::after,
                            .gNgnVl.tooltipped-multiline:active::after,
                            .gNgnVl.tooltipped-multiline:focus::after,
                            .gNgnVl.tooltipped-multiline:focus-within::after {
                              display: table-cell;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-s::after,
                            .gNgnVl.tooltipped-se::after,
                            .gNgnVl.tooltipped-sw::after {
                              top: 100%;
                              right: 50%;
                              margin-top: 6px;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-se::after {
                              right: auto;
                              left: 50%;
                              margin-left: -16px;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-sw::after {
                              margin-right: -16px;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-n::after,
                            .gNgnVl.tooltipped-ne::after,
                            .gNgnVl.tooltipped-nw::after {
                              right: 50%;
                              bottom: 100%;
                              margin-bottom: 6px;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-ne::after {
                              right: auto;
                              left: 50%;
                              margin-left: -16px;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-nw::after {
                              margin-right: -16px;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-s::after,
                            .gNgnVl.tooltipped-n::after {
                              -webkit-transform: translateX(50%);
                              -ms-transform: translateX(50%);
                              transform: translateX(50%);
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-w::after {
                              right: 100%;
                              bottom: 50%;
                              margin-right: 6px;
                              -webkit-transform: translateY(50%);
                              -ms-transform: translateY(50%);
                              transform: translateY(50%);
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-e::after {
                              bottom: 50%;
                              left: 100%;
                              margin-left: 6px;
                              -webkit-transform: translateY(50%);
                              -ms-transform: translateY(50%);
                              transform: translateY(50%);
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-multiline::after {
                              width: -webkit-max-content;
                              width: -moz-max-content;
                              width: max-content;
                              max-width: 250px;
                              word-wrap: break-word;
                              white-space: pre-line;
                              border-collapse: separate;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-multiline.tooltipped-s::after,
                            .gNgnVl.tooltipped-multiline.tooltipped-n::after {
                              right: auto;
                              left: 50%;
                              -webkit-transform: translateX(-50%);
                              -ms-transform: translateX(-50%);
                              transform: translateX(-50%);
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-multiline.tooltipped-w::after,
                            .gNgnVl.tooltipped-multiline.tooltipped-e::after {
                              right: 100%;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-align-right-2::after {
                              right: 0;
                              margin-right: 0;
                            }

                            /*!sc*/
                            .gNgnVl.tooltipped-align-left-2::after {
                              left: 0;
                              margin-left: 0;
                            }

                            /*!sc*/
                            data-styled.g12[id="Tooltip__TooltipBase-sc-17tf59c-0"] {
                              content: "gNgnVl,"
                            }

                            /*!sc*/
                            .dliONX {
                              display: inline-block;
                              overflow: hidden;
                              text-overflow: ellipsis;
                              vertical-align: top;
                              white-space: nowrap;
                              max-width: 125px;
                            }

                            /*!sc*/
                            data-styled.g14[id="Truncate__StyledTruncate-sc-23o1d2-0"] {
                              content: "dliONX,"
                            }

                            /*!sc*/
                            .bOMzPg {
                              min-width: 0;
                            }

                            /*!sc*/
                            .bOMzPg:where([data-size='small']) {
                              font-size: var(--text-body-size-small, 0.75rem);
                              line-height: var(--text-body-lineHeight-small, 1.6666);
                            }

                            /*!sc*/
                            .bOMzPg:where([data-size='medium']) {
                              font-size: var(--text-body-size-medium, 0.875rem);
                              line-height: var(--text-body-lineHeight-medium, 1.4285);
                            }

                            /*!sc*/
                            .bOMzPg:where([data-size='large']) {
                              font-size: var(--text-body-size-large, 1rem);
                              line-height: var(--text-body-lineHeight-large, 1.5);
                            }

                            /*!sc*/
                            .bOMzPg:where([data-weight='light']) {
                              font-weight: var(--base-text-weight-light, 300);
                            }

                            /*!sc*/
                            .bOMzPg:where([data-weight='normal']) {
                              font-weight: var(--base-text-weight-normal, 400);
                            }

                            /*!sc*/
                            .bOMzPg:where([data-weight='medium']) {
                              font-weight: var(--base-text-weight-medium, 500);
                            }

                            /*!sc*/
                            .bOMzPg:where([data-weight='semibold']) {
                              font-weight: var(--base-text-weight-semibold, 600);
                            }

                            /*!sc*/
                            data-styled.g23[id="Text-sc-17v1xeu-0"] {
                              content: "bOMzPg,"
                            }

                            /*!sc*/
                            .iRCRcS {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              padding-inline: var(--stack-padding-normal, 16px);
                              -webkit-box-pack: start;
                              -webkit-justify-content: flex-start;
                              -ms-flex-pack: start;
                              justify-content: flex-start;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              min-height: var(--control-xlarge-size, 48px);
                              box-shadow: inset 0px -1px var(--borderColor-muted, var(--borderColor-muted, var(--color-border-muted, hsla(210, 18%, 87%, 1))));
                              -webkit-box-flex: 1;
                              -webkit-flex-grow: 1;
                              -ms-flex-positive: 1;
                              flex-grow: 1;
                              border-bottom: none;
                              max-width: 100%;
                              padding-left: 8px;
                              padding-right: 8px;
                            }

                            /*!sc*/
                            data-styled.g25[id="UnderlineTabbedInterface__StyledUnderlineWrapper-sc-4ilrg0-0"] {
                              content: "iRCRcS,"
                            }

                            /*!sc*/
                            .cgXGvr {
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              list-style: none;
                              white-space: nowrap;
                              padding: 0;
                              margin: 0;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              gap: 8px;
                              position: relative;
                            }

                            /*!sc*/
                            data-styled.g26[id="UnderlineTabbedInterface__StyledUnderlineItemList-sc-4ilrg0-1"] {
                              content: "cgXGvr,"
                            }

                            /*!sc*/
                            .cSDcQt {
                              -webkit-appearance: none;
                              -moz-appearance: none;
                              appearance: none;
                              background-color: transparent;
                              border: 0;
                              cursor: pointer;
                              font: inherit;
                              position: relative;
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                              color: var(--fgColor-default, var(--color-fg-default, #1F2328));
                              text-align: center;
                              -webkit-text-decoration: none;
                              text-decoration: none;
                              line-height: var(--text-body-lineHeight-medium, 1.4285);
                              border-radius: var(--borderRadius-medium, 6px);
                              font-size: var(--text-body-size-medium, 14px);
                              padding-inline: var(--control-medium-paddingInline-condensed, 8px);
                              padding-block: var(--control-medium-paddingBlock, 6px);
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                            }

                            /*!sc*/
                            @media (hover:hover) {
                              .cSDcQt:hover {
                                background-color: var(--bgColor-neutral-muted, var(--bgColor-neutral-muted, var(--color-neutral-subtle, rgba(234, 238, 242, 0.5))));
                                -webkit-transition: background 0.12s ease-out;
                                transition: background 0.12s ease-out;
                                -webkit-text-decoration: none;
                                text-decoration: none;
                              }
                            }

                            /*!sc*/
                            .cSDcQt:focus: {
                              outline: 2px solid transparent;
                              box-shadow: inset 0 0 0 2px var(--fgColor-accent, var(--fgColor-accent, var(--color-accent-fg, #0969da)));
                            }

                            /*!sc*/
                            .cSDcQt:focus::not(:focus-visible) {
                              box-shadow: none;
                            }

                            /*!sc*/
                            .cSDcQt:focus-visible {
                              outline: 2px solid transparent;
                              box-shadow: inset 0 0 0 2px var(--fgColor-accent, var(--fgColor-accent, var(--color-accent-fg, #0969da)));
                            }

                            /*!sc*/
                            .cSDcQt [data-content]::before {
                              content: attr(data-content);
                              display: block;
                              height: 0;
                              font-weight: var(--base-text-weight-semibold, 500);
                              visibility: hidden;
                              white-space: nowrap;
                            }

                            /*!sc*/
                            .cSDcQt [data-component='icon'] {
                              color: var(--fgColor-muted, var(--fgColor-muted, var(--color-fg-muted, #656d76)));
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                              display: -webkit-inline-box;
                              display: -webkit-inline-flex;
                              display: -ms-inline-flexbox;
                              display: inline-flex;
                              margin-inline-end: var(--control-medium-gap, 8px);
                            }

                            /*!sc*/
                            .cSDcQt [data-component='counter'] {
                              margin-inline-start: var(--control-medium-gap, 8px);
                              display: -webkit-box;
                              display: -webkit-flex;
                              display: -ms-flexbox;
                              display: flex;
                              -webkit-align-items: center;
                              -webkit-box-align: center;
                              -ms-flex-align: center;
                              align-items: center;
                            }

                            /*!sc*/
                            .cSDcQt::after {
                              position: absolute;
                              right: 50%;
                              bottom: calc(50% - calc(var(--control-xlarge-size, 48px) / 2 + 1px));
                              width: 100%;
                              height: 2px;
                              content: '';
                              background-color: transparent;
                              border-radius: 0;
                              -webkit-transform: translate(50%, -50%);
                              -ms-transform: translate(50%, -50%);
                              transform: translate(50%, -50%);
                            }

                            /*!sc*/
                            .cSDcQt[aria-current]:not([aria-current='false']) [data-component='text'],
                            .cSDcQt[aria-selected='true'] [data-component='text'] {
                              font-weight: var(--base-text-weight-semibold, 500);
                            }

                            /*!sc*/
                            .cSDcQt[aria-current]:not([aria-current='false'])::after,
                            .cSDcQt[aria-selected='true']::after {
                              background-color: var(--underlineNav-borderColor-active, var(--color-primer-border-active, #fd8c73));
                            }

                            /*!sc*/
                            @media (forced-colors:active) {

                              .cSDcQt[aria-current]:not([aria-current='false'])::after,
                              .cSDcQt[aria-selected='true']::after {
                                background-color: LinkText;
                              }
                            }

                            /*!sc*/
                            data-styled.g27[id="UnderlineTabbedInterface__StyledUnderlineItem-sc-4ilrg0-2"] {
                              content: "cSDcQt,"
                            }

                            /*!sc*/
                          </style> <!-- --> <!-- -->
                          <div class="Box-sc-g0xbh4-0 izjvBm">
                            <div class="Box-sc-g0xbh4-0 rPQgy">
                              <div class="Box-sc-g0xbh4-0 eUMEDg"></div>
                            </div>
                            <div class="Box-sc-g0xbh4-0 eLcVee">
                              <div class="Box-sc-g0xbh4-0 hsfLlq">
                                <div class="Box-sc-g0xbh4-0 gpKoUz"><button type="button" aria-haspopup="true"
                                    aria-expanded="false" tabindex="0" aria-label="main branch"
                                    data-testid="anchor-button"
                                    class="types__StyledButton-sc-ws60qy-0 jwBfae overview-ref-selector width-full"
                                    data-loading="false"
                                    aria-describedby="branch-picker-repos-header-ref-selector-loading-announcement"
                                    id="branch-picker-repos-header-ref-selector"><span data-component="buttonContent"
                                      class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="text">
                                        <div class="Box-sc-g0xbh4-0 bKgizp">
                                          <div class="Box-sc-g0xbh4-0 iPGYsi"><svg aria-hidden="true" focusable="false"
                                              role="img" class="octicon octicon-git-branch" viewBox="0 0 16 16"
                                              width="16" height="16" fill="currentColor"
                                              style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                              <path
                                                d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z">
                                              </path>
                                            </svg></div>
                                          <div class="Box-sc-g0xbh4-0 caeYDk ref-selector-button-text-container"><span
                                              class="Text-sc-17v1xeu-0 bOMzPg"> <!-- -->main</span></div>
                                        </div>
                                      </span><span data-component="trailingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg
                                          aria-hidden="true" focusable="false" role="img"
                                          class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16"
                                          height="16" fill="currentColor"
                                          style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                          <path
                                            d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z">
                                          </path>
                                        </svg></span></span></button><button hidden=""
                                    data-hotkey-scope="read-only-cursor-text-area"></button></div>
                                <div class="Box-sc-g0xbh4-0 laYubZ"><a style="--button-color:fg.muted" type="button"
                                    href="/HengXin666/HXNet/branches" data-loading="false"
                                    aria-describedby=":Rclab:-loading-announcement"
                                    class="types__StyledButton-sc-ws60qy-0 eybzoG"><span data-component="buttonContent"
                                      class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual"
                                        class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false"
                                          role="img" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16"
                                          height="16" fill="currentColor"
                                          style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                          <path
                                            d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z">
                                          </path>
                                        </svg></span><span data-component="text">Branches</span></span></a><a
                                    style="--button-color:fg.muted" type="button" href="/HengXin666/HXNet/tags"
                                    data-loading="false" aria-describedby=":Rklab:-loading-announcement"
                                    class="types__StyledButton-sc-ws60qy-0 eybzoG"><span data-component="buttonContent"
                                      class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual"
                                        class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false"
                                          role="img" class="octicon octicon-tag" viewBox="0 0 16 16" width="16"
                                          height="16" fill="currentColor"
                                          style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                          <path
                                            d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z">
                                          </path>
                                        </svg></span><span data-component="text">Tags</span></span></a></div>
                                <div class="Box-sc-g0xbh4-0 swnaL"><a style="--button-color:fg.muted" type="button"
                                    aria-label="Go to Branches page" href="/HengXin666/HXNet/branches"
                                    data-loading="false" data-no-visuals="true"
                                    aria-describedby=":Relab:-loading-announcement"
                                    class="types__StyledButton-sc-ws60qy-0 kPKwzC"><svg aria-hidden="true"
                                      focusable="false" role="img" class="octicon octicon-git-branch"
                                      viewBox="0 0 16 16" width="16" height="16" fill="currentColor"
                                      style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                      <path
                                        d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z">
                                      </path>
                                    </svg></a><a style="--button-color:fg.muted" type="button"
                                    aria-label="Go to Tags page" href="/HengXin666/HXNet/tags" data-loading="false"
                                    data-no-visuals="true" aria-describedby=":Rmlab:-loading-announcement"
                                    class="types__StyledButton-sc-ws60qy-0 kPKwzC"><svg aria-hidden="true"
                                      focusable="false" role="img" class="octicon octicon-tag" viewBox="0 0 16 16"
                                      width="16" height="16" fill="currentColor"
                                      style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                      <path
                                        d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z">
                                      </path>
                                    </svg></a></div>
                              </div>
                              <div class="Box-sc-g0xbh4-0 bWpuBf">
                                <div class="Box-sc-g0xbh4-0 grHjNb">
                                  <div class="Box-sc-g0xbh4-0 dXTsqj"><!--$!--><template></template><!--/$--></div>
                                  <div class="Box-sc-g0xbh4-0 dCOrmu"><button type="button" data-loading="false"
                                      data-no-visuals="true" aria-describedby=":Rr5ab:-loading-announcement"
                                      class="types__StyledButton-sc-ws60qy-0 feqCqy"><span
                                        data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span
                                          data-component="text">Go to file</span></span></button></div>
                                  <div class="react-directory-add-file-icon"></div>
                                  <div class="react-directory-remove-file-icon"></div>
                                </div><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0"
                                  data-loading="false" aria-describedby=":R55ab:-loading-announcement" id=":R55ab:"
                                  class="types__StyledButton-sc-ws60qy-0 dLirOd"><span data-component="buttonContent"
                                    class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual"
                                      class="Box-sc-g0xbh4-0 trpoQ">
                                      <div class="Box-sc-g0xbh4-0 bVvbgP"><svg aria-hidden="true" focusable="false"
                                          role="img" class="octicon octicon-code" viewBox="0 0 16 16" width="16"
                                          height="16" fill="currentColor"
                                          style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                          <path
                                            d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z">
                                          </path>
                                        </svg></div>
                                    </span><span data-component="text">Code</span></span><span
                                    data-component="trailingAction" class="Box-sc-g0xbh4-0 trpoQ"><svg
                                      aria-hidden="true" focusable="false" class="octicon octicon-triangle-down"
                                      viewBox="0 0 16 16" width="16" height="16" fill="currentColor"
                                      style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                      <path
                                        d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z">
                                      </path>
                                    </svg></span></button>
                                <div class="Box-sc-g0xbh4-0 bNDvfp"><button data-component="IconButton" type="button"
                                    aria-label="Open more actions menu" aria-haspopup="true" aria-expanded="false"
                                    tabindex="0" data-loading="false" data-no-visuals="true"
                                    aria-describedby=":R75ab:-loading-announcement" id=":R75ab:"
                                    class="types__StyledButton-sc-ws60qy-0 feqCqy"><svg aria-hidden="true"
                                      focusable="false" role="img" class="octicon octicon-kebab-horizontal"
                                      viewBox="0 0 16 16" width="16" height="16" fill="currentColor"
                                      style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                      <path
                                        d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z">
                                      </path>
                                    </svg></button></div>
                              </div>
                            </div>
                            <div class="Box-sc-g0xbh4-0 yfPnm">
                              <div data-hpc="true"><button hidden="" data-testid="focus-next-element-button"
                                  data-hotkey="j"></button><button hidden="" data-testid="focus-previous-element-button"
                                  data-hotkey="k"></button>
                                <h2 class="Heading__StyledHeading-sc-1c1dgg0-0 fpGZrB sr-only"
                                  data-testid="screen-reader-heading" id="folders-and-files">Folders and files</h2>
                                <table aria-labelledby="folders-and-files" class="Box-sc-g0xbh4-0 cAQuiW">
                                  <thead class="Box-sc-g0xbh4-0 iiUlLN">
                                    <tr class="Box-sc-g0xbh4-0 jmggSN">
                                      <th colSpan="2" class="Box-sc-g0xbh4-0 kvYunM"><span class="text-bold">Name</span>
                                      </th>
                                      <th colSpan="1" class="Box-sc-g0xbh4-0 hrLuxA"><span class="text-bold">Name</span>
                                      </th>
                                      <th class="hide-sm">
                                        <div title="Last commit message"
                                          class="Truncate__StyledTruncate-sc-23o1d2-0 dliONX width-fit"><span
                                            class="text-bold">Last commit message</span></div>
                                      </th>
                                      <th colSpan="1" class="Box-sc-g0xbh4-0 cuEKae">
                                        <div title="Last commit date"
                                          class="Truncate__StyledTruncate-sc-23o1d2-0 dliONX width-fit"><span
                                            class="text-bold">Last commit date</span></div>
                                      </th>
                                    </tr>
                                  </thead>
                                  <tbody>
                                    <tr class="Box-sc-g0xbh4-0 jEbBOT">
                                      <td colSpan="3" class="bgColor-muted p-1 rounded-top-2">
                                        <div class="Box-sc-g0xbh4-0 brJRqk">
                                          <h2 class="Heading__StyledHeading-sc-1c1dgg0-0 fpGZrB sr-only"
                                            data-testid="screen-reader-heading">Latest commit</h2>
                                          <div style="width:120px" class="Skeleton Skeleton--text"
                                            data-testid="loading"> </div>
                                          <div class="d-flex flex-shrink-0 gap-2">
                                            <div data-testid="latest-commit-details"
                                              class="d-none d-sm-flex flex-items-center"></div>
                                            <div class="d-flex gap-2">
                                              <h2 class="Heading__StyledHeading-sc-1c1dgg0-0 fpGZrB sr-only"
                                                data-testid="screen-reader-heading">History</h2><a
                                                class="types__StyledButton-sc-ws60qy-0 emYRmJ d-none d-lg-flex LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default"
                                                href="/HengXin666/HXNet/commits/main/" data-loading="false"
                                                data-size="small"
                                                aria-describedby=":Raqj8pab:-loading-announcement"><span
                                                  data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span
                                                    data-component="leadingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg
                                                      aria-hidden="true" focusable="false" role="img"
                                                      class="octicon octicon-history" viewBox="0 0 16 16" width="16"
                                                      height="16" fill="currentColor"
                                                      style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                                      <path
                                                        d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z">
                                                      </path>
                                                    </svg></span><span data-component="text"><span
                                                      class="fgColor-default">188 Commits</span></span></span></a>
                                              <div class="d-sm-none"></div>
                                              <div class="d-flex d-lg-none"><span role="tooltip"
                                                  aria-label="188 Commits" id="history-icon-button-tooltip"
                                                  class="Tooltip__TooltipBase-sc-17tf59c-0 gNgnVl tooltipped-n"><a
                                                    class="types__StyledButton-sc-ws60qy-0 emYRmJ LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default"
                                                    href="/HengXin666/HXNet/commits/main/" data-loading="false"
                                                    data-size="small"
                                                    aria-describedby=":R1iqj8pab:-loading-announcement history-icon-button-tooltip"><span
                                                      data-component="buttonContent"
                                                      class="Box-sc-g0xbh4-0 kkrdEu"><span
                                                        data-component="leadingVisual"
                                                        class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true"
                                                          focusable="false" role="img" class="octicon octicon-history"
                                                          viewBox="0 0 16 16" width="16" height="16" fill="currentColor"
                                                          style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                                          <path
                                                            d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z">
                                                          </path>
                                                        </svg></span></span></a></span></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-0">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="certs"
                                                  aria-label="certs, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/certs">certs</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="certs"
                                                  aria-label="certs, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/certs">certs</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-1">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="documents"
                                                  aria-label="documents, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/documents">documents</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="documents"
                                                  aria-label="documents, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/documents">documents</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-2">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="examples"
                                                  aria-label="examples, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/examples">examples</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="examples"
                                                  aria-label="examples, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/examples">examples</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-3">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="include"
                                                  aria-label="include, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/include">include</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="include"
                                                  aria-label="include, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/include">include</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-4">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="lib"
                                                  aria-label="lib, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/lib">lib</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="lib"
                                                  aria-label="lib, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/lib">lib</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-5">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="src"
                                                  aria-label="src, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/src">src</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="src"
                                                  aria-label="src, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/src">src</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-6">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="static"
                                                  aria-label="static, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/static">static</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="icon-directory" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="static"
                                                  aria-label="static, (Directory)" class="Link--primary"
                                                  href="/HengXin666/HXNet/tree/main/static">static</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-7">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title=".gitignore"
                                                  aria-label=".gitignore, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/.gitignore">.gitignore</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title=".gitignore"
                                                  aria-label=".gitignore, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/.gitignore">.gitignore</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-8">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="CMakeLists.txt"
                                                  aria-label="CMakeLists.txt, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/CMakeLists.txt">CMakeLists.txt</a>
                                              </div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="CMakeLists.txt"
                                                  aria-label="CMakeLists.txt, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/CMakeLists.txt">CMakeLists.txt</a>
                                              </div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row undefined" id="folder-row-9">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="LICENSE"
                                                  aria-label="LICENSE, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/LICENSE">LICENSE</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="LICENSE"
                                                  aria-label="LICENSE, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/LICENSE">LICENSE</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="react-directory-row truncate-for-mobile" id="folder-row-10">
                                      <td class="react-directory-row-name-cell-small-screen" colSpan="2">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="README.md"
                                                  aria-label="README.md, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/README.md">README.md</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-name-cell-large-screen" colSpan="1">
                                        <div class="react-directory-filename-column"><svg aria-hidden="true"
                                            focusable="false" role="img" class="color-fg-muted" viewBox="0 0 16 16"
                                            width="16" height="16" fill="currentColor"
                                            style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                            <path
                                              d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
                                            </path>
                                          </svg>
                                          <div class="overflow-hidden">
                                            <div class="react-directory-filename-cell">
                                              <div class="react-directory-truncate"><a title="README.md"
                                                  aria-label="README.md, (File)" class="Link--primary"
                                                  href="/HengXin666/HXNet/blob/main/README.md">README.md</a></div>
                                            </div>
                                          </div>
                                        </div>
                                      </td>
                                      <td class="react-directory-row-commit-cell">
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                      <td>
                                        <div class="Skeleton Skeleton--text"> </div>
                                      </td>
                                    </tr>
                                    <tr class="Box-sc-g0xbh4-0 epsqEd show-for-mobile" data-testid="view-all-files-row">
                                      <td colSpan="3" class="Box-sc-g0xbh4-0 ldpruc">
                                        <div><button class="Link__StyledLink-sc-14289xe-0 dheQRw">View all
                                            files</button></div>
                                      </td>
                                    </tr>
                                  </tbody>
                                </table>
                              </div>
                              <div class="Box-sc-g0xbh4-0 ehcSsh">
                                <div class="Box-sc-g0xbh4-0 iGmlUb">
                                  <div itemscope="" itemType="https://schema.org/abstract"
                                    class="Box-sc-g0xbh4-0 iRQGXA">
                                    <h2 class="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0 rTZSs">Repository files
                                      navigation</h2>
                                    <nav aria-label="Repository files"
                                      class="UnderlineTabbedInterface__StyledUnderlineWrapper-sc-4ilrg0-0 iRCRcS">
                                      <ul role="list"
                                        class="UnderlineTabbedInterface__StyledUnderlineItemList-sc-4ilrg0-1 cgXGvr">
                                        <li class="Box-sc-g0xbh4-0 gwuIGu"><a href="#" aria-current="page"
                                            class="UnderlineTabbedInterface__StyledUnderlineItem-sc-4ilrg0-2 cSDcQt"><span
                                              data-component="icon"><svg aria-hidden="true" focusable="false" role="img"
                                                class="octicon octicon-book" viewBox="0 0 16 16" width="16" height="16"
                                                fill="currentColor"
                                                style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                                <path
                                                  d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z">
                                                </path>
                                              </svg></span><span data-component="text"
                                              data-content="README">README</span></a></li>
                                        <li class="Box-sc-g0xbh4-0 gwuIGu"><a href="#"
                                            class="UnderlineTabbedInterface__StyledUnderlineItem-sc-4ilrg0-2 cSDcQt"><span
                                              data-component="icon"><svg aria-hidden="true" focusable="false" role="img"
                                                class="octicon octicon-law" viewBox="0 0 16 16" width="16" height="16"
                                                fill="currentColor"
                                                style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                                <path
                                                  d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z">
                                                </path>
                                              </svg></span><span data-component="text"
                                              data-content="Apache-2.0 license">Apache-2.0 license</span></a></li>
                                      </ul>
                                    </nav><button style="--button-color:fg.subtle" type="button" aria-label="Outline"
                                      aria-haspopup="true" aria-expanded="false" tabindex="0" data-loading="false"
                                      aria-describedby=":Rr9ab:-loading-announcement" id=":Rr9ab:"
                                      class="types__StyledButton-sc-ws60qy-0 iNcPMC"><svg aria-hidden="true"
                                        focusable="false" role="img" class="octicon octicon-list-unordered"
                                        viewBox="0 0 16 16" width="16" height="16" fill="currentColor"
                                        style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible">
                                        <path
                                          d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z">
                                        </path>
                                      </svg></button>
                                  </div>
                                  <div class="Box-sc-g0xbh4-0 bJMeLZ js-snippet-clipboard-copy-unpositioned"
                                    data-hpc="true">
                                    <article class="markdown-body entry-content container-lg" itemprop="text">
                                      <div class="markdown-heading" dir="auto">
                                        <h1 align="center" tabindex="-1" class="heading-element" dir="auto">HXNet</h1><a
                                          id="user-content-hxnet" class="anchor" aria-label="Permalink: HXNet"
                                          href="#hxnet"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <div class="markdown-alert markdown-alert-note" dir="auto">
                                        <p class="markdown-alert-title" dir="auto"><svg
                                            class="octicon octicon-info mr-2" viewBox="0 0 16 16" version="1.1"
                                            width="16" height="16" aria-hidden="true">
                                            <path
                                              d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z">
                                            </path>
                                          </svg>Note</p>
                                        <p dir="auto"><em>Heng_Xin学习现代Cpp的代码存放库</em></p>
                                      </div>
                                      <ul dir="auto">
                                        <li>
                                          <p dir="auto">基于<code>io_uring</code>+协程的<code>http/https</code>服务器,
                                            基于压缩前缀树的路由, 支持<code>http/https</code>解析, <code>WebSocket</code>协议,
                                            <code>Json</code>解析, 万用<code>print</code>等;</p>
                                        </li>
                                        <li>
                                          <p dir="auto">客户端提供了简单的协程的<code>request</code>方法(API),
                                            并且支持使用<code>socks5</code>代理. 支持<code>http/https</code>,
                                            以及解析<code>Transfer-Encoding</code>分块编码的响应体</p>
                                        </li>
                                      </ul>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">构建要求</h2><a
                                          id="user-content-构建要求" class="anchor" aria-label="Permalink: 构建要求"
                                          href="#构建要求"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <ul dir="auto">
                                        <li>Linux 5.1+</li>
                                        <li>GCC 编译器 (推荐)</li>
                                        <li>C++20</li>
                                      </ul>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">快速开始</h2><a
                                          id="user-content-快速开始" class="anchor" aria-label="Permalink: 快速开始"
                                          href="#快速开始"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <div class="markdown-alert markdown-alert-tip" dir="auto">
                                        <p class="markdown-alert-title" dir="auto"><svg
                                            class="octicon octicon-light-bulb mr-2" viewBox="0 0 16 16" version="1.1"
                                            width="16" height="16" aria-hidden="true">
                                            <path
                                              d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z">
                                            </path>
                                          </svg>Tip</p>
                                        <p dir="auto">仍然在开发, 非最终产品</p>
                                        <ul dir="auto">
                                          <li>其他示例:
                                            <ul dir="auto">
                                              <li><a
                                                  href="/HengXin666/HXNet/blob/main/examples/ChatServer.cpp">基于轮询的聊天室</a>
                                              </li>
                                              <li><a
                                                  href="/HengXin666/HXNet/blob/main/examples/WsServer.cpp">WebSocket服务端</a>
                                              </li>
                                              <li><a
                                                  href="/HengXin666/HXNet/blob/main/examples/Client.cpp">支持<code>socks5</code>代理的<code>Http/Https</code>客户端</a>
                                              </li>
                                            </ul>
                                          </li>
                                        </ul>
                                      </div>
                                      <ul dir="auto">
                                        <li>编写端点 (提供了简化使用的 API 宏)</li>
                                      </ul>
                                      <div
                                        class="highlight highlight-source-c++ notranslate position-relative overflow-auto"
                                        dir="auto" data-snippet-clipboard-copy-content="#include &lt;HXWeb/HXApiHelper.h&gt; // 使用简化的api

// 用户定义的控制器
class MyWebController {

    // 定义端点函数
    ENDPOINT_BEGIN(API_GET, &quot;/&quot;, root) { // 注册get请求, 接收`/`路径请求
        RESPONSE_DATA( // 响应数据
            200, // 状态码
            co_await HX::STL::utils::FileUtils::asyncGetFileContent(&quot;index.html&quot;), // (body数据) 异步(协程)读取文件
            &quot;text/html&quot;, &quot;UTF-8&quot; // (响应类型), 以及响应编码
        );
        co_return true; // 注意, 端点函数是协程, 得使用 co_return 而不是return (返回值是 bool)
                        // bool 的意思是是否复用连接 (HTTP/1.1 是推荐复用连接的)
    } ENDPOINT_END;

    ENDPOINT_BEGIN(API_GET, &quot;/favicon.ico&quot;, faviconIco) {
        RESPONSE_DATA(
            200, 
            co_await HX::STL::utils::FileUtils::asyncGetFileContent(&quot;favicon.ico&quot;),
            &quot;image/x-icon&quot; // 响应编码 可以不写
        );
        co_return true;
    } ENDPOINT_END;

    ENDPOINT_BEGIN(API_GET, &quot;/files/**&quot;, files) {
        PARSE_MULTI_LEVEL_PARAM(path);
        RESPONSE_STATUS(200).setContentType(&quot;text/html&quot;, &quot;UTF-8&quot;)
                            .setBodyData(&quot;&lt;h1&gt; files URL is &quot; + path + &quot;&lt;/h1&gt;&quot;); 
        // 支持直接在端点里面响应 (记得co_await)
        // 响应后, 不会再次在 ConnectionHandler 中再次响应!
        co_await io.sendResponse(); // 立即发送响应
        co_return true;
    } ENDPOINT_END;

    ENDPOINT_BEGIN(API_GET, &quot;/home/{id}/{name}&quot;, getIdAndNameByHome) {
        START_PARSE_PATH_PARAMS; // 开始解析请求路径参数
        PARSE_PARAM(0, u_int32_t, id, false); // 解析第一个路径参数{id}, 解析为 u_int32_t类型, 命名为 id
                                              // 并且如果解析失败则不复用连接 (false)

        PARSE_PARAM(1, std::string, name);    // 解析第二个路径参数{name} (不写, 则默认复用连接)

        // 解析查询参数为键值对; ?awa=xxx 这种
        GET_PARSE_QUERY_PARAMETERS(queryMap);

        if (queryMap.count(&quot;loli&quot;)) // 如果解析到 ?loli=xxx
            std::cout &lt;&lt; queryMap[&quot;loli&quot;] &lt;&lt; '\n'; // xxx 的值

        RESPONSE_DATA(
            200, 
            &quot;&lt;h1&gt; Home id 是 &quot; + std::to_string(*id) + &quot;, 而名字是 &quot; 
            + *name + &quot;&lt;/h1&gt;&lt;h2&gt; 来自 URL: &quot; 
            + io.getRequest().getRequesPath()  + &quot; 的解析&lt;/h2&gt;&quot;, // 默认`ENDPOINT_BEGIN`会传入 const HX::web::server::IO&lt;&gt;&amp; io, 您可以对其进行更细致的操作
            &quot;text/html&quot;, &quot;UTF-8&quot;
        );
        co_return true;
    } ENDPOINT_END;

public: // 控制器成员函数 (请写成`static`方法)
    // todo...
};">
                                        <pre>#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>HXWeb/HXApiHelper.h<span class="pl-pds">&gt;</span></span> <span class="pl-c"><span class="pl-c">//</span> 使用简化的api</span>

<span class="pl-c"><span class="pl-c">//</span> 用户定义的控制器</span>
<span class="pl-k">class</span> <span class="pl-en">MyWebController</span> {

    <span class="pl-c"><span class="pl-c">//</span> 定义端点函数</span>
    <span class="pl-en">ENDPOINT_BEGIN</span>(API_GET, <span class="pl-s"><span class="pl-pds">"</span>/<span class="pl-pds">"</span></span>, root) { <span class="pl-c"><span class="pl-c">//</span> 注册get请求, 接收`/`路径请求</span>
        <span class="pl-c1">RESPONSE_DATA</span>( <span class="pl-c"><span class="pl-c">//</span> 响应数据</span>
            <span class="pl-c1">200</span>, <span class="pl-c"><span class="pl-c">//</span> 状态码</span>
            <span class="pl-k">co_await</span> <span class="pl-smi">HX::STL::utils::FileUtils::asyncGetFileContent</span>(<span class="pl-s"><span class="pl-pds">"</span>index.html<span class="pl-pds">"</span></span>), <span class="pl-c"><span class="pl-c">//</span> (body数据) 异步(协程)读取文件</span>
            <span class="pl-s"><span class="pl-pds">"</span>text/html<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>UTF-8<span class="pl-pds">"</span></span> <span class="pl-c"><span class="pl-c">//</span> (响应类型), 以及响应编码</span>
        );
        <span class="pl-k">co_return</span> <span class="pl-c1">true</span>; <span class="pl-c"><span class="pl-c">//</span> 注意, 端点函数是协程, 得使用 co_return 而不是return (返回值是 bool)</span>
                        <span class="pl-c"><span class="pl-c">//</span> bool 的意思是是否复用连接 (HTTP/1.1 是推荐复用连接的)</span>
    } ENDPOINT_END;

    <span class="pl-en">ENDPOINT_BEGIN</span>(API_GET, <span class="pl-s"><span class="pl-pds">"</span>/favicon.ico<span class="pl-pds">"</span></span>, faviconIco) {
        <span class="pl-c1">RESPONSE_DATA</span>(
            <span class="pl-c1">200</span>, 
            <span class="pl-k">co_await</span> <span class="pl-smi">HX::STL::utils::FileUtils::asyncGetFileContent</span>(<span class="pl-s"><span class="pl-pds">"</span>favicon.ico<span class="pl-pds">"</span></span>),
            <span class="pl-s"><span class="pl-pds">"</span>image/x-icon<span class="pl-pds">"</span></span> <span class="pl-c"><span class="pl-c">//</span> 响应编码 可以不写</span>
        );
        <span class="pl-k">co_return</span> <span class="pl-c1">true</span>;
    } ENDPOINT_END;

    <span class="pl-en">ENDPOINT_BEGIN</span>(API_GET, <span class="pl-s"><span class="pl-pds">"</span>/files/**<span class="pl-pds">"</span></span>, files) {
        <span class="pl-c1">PARSE_MULTI_LEVEL_PARAM</span>(path);
        <span class="pl-c1">RESPONSE_STATUS</span>(<span class="pl-c1">200</span>).<span class="pl-c1">setContentType</span>(<span class="pl-s"><span class="pl-pds">"</span>text/html<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>UTF-8<span class="pl-pds">"</span></span>)
                            .<span class="pl-c1">setBodyData</span>(<span class="pl-s"><span class="pl-pds">"</span>&lt;h1&gt; files URL is <span class="pl-pds">"</span></span> + path + <span class="pl-s"><span class="pl-pds">"</span>&lt;/h1&gt;<span class="pl-pds">"</span></span>); 
        <span class="pl-c"><span class="pl-c">//</span> 支持直接在端点里面响应 (记得co_await)</span>
        <span class="pl-c"><span class="pl-c">//</span> 响应后, 不会再次在 ConnectionHandler 中再次响应!</span>
        <span class="pl-k">co_await</span> io.<span class="pl-c1">sendResponse</span>(); <span class="pl-c"><span class="pl-c">//</span> 立即发送响应</span>
        <span class="pl-k">co_return</span> <span class="pl-c1">true</span>;
    } ENDPOINT_END;

    <span class="pl-en">ENDPOINT_BEGIN</span>(API_GET, <span class="pl-s"><span class="pl-pds">"</span>/home/{id}/{name}<span class="pl-pds">"</span></span>, getIdAndNameByHome) {
        START_PARSE_PATH_PARAMS; <span class="pl-c"><span class="pl-c">//</span> 开始解析请求路径参数</span>
        <span class="pl-c1">PARSE_PARAM</span>(<span class="pl-c1">0</span>, <span class="pl-c1">u_int32_t</span>, id, <span class="pl-c1">false</span>); <span class="pl-c"><span class="pl-c">//</span> 解析第一个路径参数{id}, 解析为 u_int32_t类型, 命名为 id</span>
                                              <span class="pl-c"><span class="pl-c">//</span> 并且如果解析失败则不复用连接 (false)</span>

        <span class="pl-c1">PARSE_PARAM</span>(<span class="pl-c1">1</span>, std::string, name);    <span class="pl-c"><span class="pl-c">//</span> 解析第二个路径参数{name} (不写, 则默认复用连接)</span>

        <span class="pl-c"><span class="pl-c">//</span> 解析查询参数为键值对; ?awa=xxx 这种</span>
        <span class="pl-c1">GET_PARSE_QUERY_PARAMETERS</span>(queryMap);

        <span class="pl-k">if</span> (queryMap.<span class="pl-c1">count</span>(<span class="pl-s"><span class="pl-pds">"</span>loli<span class="pl-pds">"</span></span>)) <span class="pl-c"><span class="pl-c">//</span> 如果解析到 ?loli=xxx</span>
            std::cout &lt;&lt; queryMap[<span class="pl-s"><span class="pl-pds">"</span>loli<span class="pl-pds">"</span></span>] &lt;&lt; <span class="pl-s"><span class="pl-pds">'</span><span class="pl-cce">\n</span><span class="pl-pds">'</span></span>; <span class="pl-c"><span class="pl-c">//</span> xxx 的值</span>

        <span class="pl-c1">RESPONSE_DATA</span>(
            <span class="pl-c1">200</span>, 
            <span class="pl-s"><span class="pl-pds">"</span>&lt;h1&gt; Home id 是 <span class="pl-pds">"</span></span> + <span class="pl-c1">std::to_string</span>(*id) + <span class="pl-s"><span class="pl-pds">"</span>, 而名字是 <span class="pl-pds">"</span></span> 
            + *name + <span class="pl-s"><span class="pl-pds">"</span>&lt;/h1&gt;&lt;h2&gt; 来自 URL: <span class="pl-pds">"</span></span> 
            + io.<span class="pl-c1">getRequest</span>().<span class="pl-c1">getRequesPath</span>()  + <span class="pl-s"><span class="pl-pds">"</span> 的解析&lt;/h2&gt;<span class="pl-pds">"</span></span>, <span class="pl-c"><span class="pl-c">//</span> 默认`ENDPOINT_BEGIN`会传入 const HX::web::server::IO&lt;&gt;&amp; io, 您可以对其进行更细致的操作</span>
            <span class="pl-s"><span class="pl-pds">"</span>text/html<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>UTF-8<span class="pl-pds">"</span></span>
        );
        <span class="pl-k">co_return</span> <span class="pl-c1">true</span>;
    } ENDPOINT_END;

<span class="pl-k">public:</span> <span class="pl-c"><span class="pl-c">//</span> 控制器成员函数 (请写成`static`方法)</span>
    <span class="pl-c"><span class="pl-c">//</span> todo...</span>
};</pre>
                                      </div>
                                      <ul dir="auto">
                                        <li>绑定控制器到全局路由</li>
                                      </ul>
                                      <div
                                        class="highlight highlight-source-c++ notranslate position-relative overflow-auto"
                                        dir="auto" data-snippet-clipboard-copy-content="#include &lt;HXWeb/HXApiHelper.h&gt; // 宏所在头文件

ROUTER_BIND(MyWebController); // 这个类在上面声明过了">
                                        <pre>#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>HXWeb/HXApiHelper.h<span class="pl-pds">&gt;</span></span> <span class="pl-c"><span class="pl-c">//</span> 宏所在头文件</span>

<span class="pl-en">ROUTER_BIND</span>(MyWebController); <span class="pl-c"><span class="pl-c">//</span> 这个类在上面声明过了</span></pre>
                                      </div>
                                      <ul dir="auto">
                                        <li>启动服务器, 并且监听 127.0.0.1:28205, 并且设置路由失败时候返回的界面
                                          <ul dir="auto">
                                            <li>可选: 可以设置线程数和超时时间 | 每个线程独享一个<code>uring</code>, 但是绑定同一个端口, 由操作系统进行负载均衡
                                            </li>
                                          </ul>
                                        </li>
                                      </ul>
                                      <div
                                        class="highlight highlight-source-c++ notranslate position-relative overflow-auto"
                                        dir="auto" data-snippet-clipboard-copy-content="#include &lt;HXWeb/HXApiHelper.h&gt; // 宏所在头文件
#include &lt;HXWeb/server/Server.h&gt;

int main() {
    chdir(&quot;../static&quot;);
    setlocale(LC_ALL, &quot;zh_CN.UTF-8&quot;);
    ROUTER_BIND(WSChatController);
    ERROR_ENDPOINT_BEGIN { // 自定义: 设置路由失败时候返回的界面
        RESPONSE_DATA(
            404,
            &quot;&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=UTF-8&gt;&lt;title&gt;404 Not Found&lt;/title&gt;&lt;style&gt;body{font-family:Arial,sans-serif;text-align:center;padding:50px;background-color:#f4f4f4}h1{font-size:100px;margin:0;color:#333}p{font-size:24px;color:red}&lt;/style&gt;&lt;body&gt;&lt;h1&gt;404&lt;/h1&gt;&lt;p&gt;Not Found&lt;/p&gt;&lt;hr/&gt;&lt;p&gt;HXNet&lt;/p&gt;&quot;,
            &quot;text/html&quot;, &quot;UTF-8&quot;
        );
        co_return false;
    } ERROR_ENDPOINT_END;

    // 启动Http服务 [阻塞于此]
    HX::web::server::Server::startHttp(&quot;127.0.0.1&quot;, &quot;28205&quot;, 16 /*可选 线程数(互不相关)*/, 10s /*可选 超时时间*/);

    // 或者, 启动Https服务 [阻塞于此], 需要提供证书和密钥
    HX::web::server::Server::startHttps(&quot;127.0.0.1&quot;, &quot;28205&quot;, &quot;certs/cert.pem&quot;, &quot;certs/key.pem&quot;);
    return 0;
}">
                                        <pre>#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>HXWeb/HXApiHelper.h<span class="pl-pds">&gt;</span></span> <span class="pl-c"><span class="pl-c">//</span> 宏所在头文件</span>
#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>HXWeb/server/Server.h<span class="pl-pds">&gt;</span></span>

<span class="pl-k">int</span> <span class="pl-en">main</span>() {
    <span class="pl-c1">chdir</span>(<span class="pl-s"><span class="pl-pds">"</span>../static<span class="pl-pds">"</span></span>);
    <span class="pl-c1">setlocale</span>(LC_ALL, <span class="pl-s"><span class="pl-pds">"</span>zh_CN.UTF-8<span class="pl-pds">"</span></span>);
    <span class="pl-c1">ROUTER_BIND</span>(WSChatController);
    ERROR_ENDPOINT_BEGIN { <span class="pl-c"><span class="pl-c">//</span> 自定义: 设置路由失败时候返回的界面</span>
        <span class="pl-c1">RESPONSE_DATA</span>(
            <span class="pl-c1">404</span>,
            <span class="pl-s"><span class="pl-pds">"</span>&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=UTF-8&gt;&lt;title&gt;404 Not Found&lt;/title&gt;&lt;style&gt;body{font-family:Arial,sans-serif;text-align:center;padding:50px;background-color:#f4f4f4}h1{font-size:100px;margin:0;color:#333}p{font-size:24px;color:red}&lt;/style&gt;&lt;body&gt;&lt;h1&gt;404&lt;/h1&gt;&lt;p&gt;Not Found&lt;/p&gt;&lt;hr/&gt;&lt;p&gt;HXNet&lt;/p&gt;<span class="pl-pds">"</span></span>,
            <span class="pl-s"><span class="pl-pds">"</span>text/html<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>UTF-8<span class="pl-pds">"</span></span>
        );
        <span class="pl-k">co_return</span> <span class="pl-c1">false</span>;
    } ERROR_ENDPOINT_END;

    <span class="pl-c"><span class="pl-c">//</span> 启动Http服务 [阻塞于此]</span>
    <span class="pl-c1">HX::web::server::Server::startHttp</span>(<span class="pl-s"><span class="pl-pds">"</span>127.0.0.1<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>28205<span class="pl-pds">"</span></span>, <span class="pl-c1">16</span> <span class="pl-c"><span class="pl-c">/*</span>可选 线程数(互不相关)<span class="pl-c">*/</span></span>, 10s <span class="pl-c"><span class="pl-c">/*</span>可选 超时时间<span class="pl-c">*/</span></span>);

    <span class="pl-c"><span class="pl-c">//</span> 或者, 启动Https服务 [阻塞于此], 需要提供证书和密钥</span>
    <span class="pl-c1">HX::web::server::Server::startHttps</span>(<span class="pl-s"><span class="pl-pds">"</span>127.0.0.1<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>28205<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>certs/cert.pem<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>certs/key.pem<span class="pl-pds">"</span></span>);
    <span class="pl-k">return</span> <span class="pl-c1">0</span>;
}</pre>
                                      </div>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">相关依赖</h2><a
                                          id="user-content-相关依赖" class="anchor" aria-label="Permalink: 相关依赖"
                                          href="#相关依赖"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <markdown-accessiblity-table>
                                        <table>
                                          <thead>
                                            <tr>
                                              <th>依赖库</th>
                                              <th>说明</th>
                                              <th>备注</th>
                                            </tr>
                                          </thead>
                                          <tbody>
                                            <tr>
                                              <td>liburing</td>
                                              <td>io_uring的封装</td>
                                              <td><a
                                                  href="https://github.com/axboe/liburing">https://github.com/axboe/liburing</a>
                                              </td>
                                            </tr>
                                            <tr>
                                              <td>hashlib</td>
                                              <td>用于<code>WebSocket</code>构造<code>SHA-1</code>信息摘要;
                                                以及进行<code>Base64</code>编码</td>
                                              <td><a href="https://create.stephan-brumme.com/hash-library/"
                                                  rel="nofollow">https://create.stephan-brumme.com/hash-library/</a>
                                              </td>
                                            </tr>
                                            <tr>
                                              <td>OpenSSL 3.3.1</td>
                                              <td>用于https的证书/握手</td>
                                              <td><a
                                                  href="https://github.com/openssl/openssl">https://github.com/openssl/openssl</a>
                                              </td>
                                            </tr>
                                          </tbody>
                                        </table>
                                      </markdown-accessiblity-table>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">代码规范</h2><a
                                          id="user-content-代码规范" class="anchor" aria-label="Permalink: 代码规范"
                                          href="#代码规范"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <blockquote>
                                        <p dir="auto">--&gt; <a
                                            href="/HengXin666/HXNet/blob/main/documents/CodingStandards/CppStyle.md">C++
                                            编码规范</a></p>
                                      </blockquote>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">开发计划</h2><a
                                          id="user-content-开发计划" class="anchor" aria-label="Permalink: 开发计划"
                                          href="#开发计划"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <blockquote>
                                        <p dir="auto">--&gt; <a
                                            href="/HengXin666/HXNet/blob/main/documents/DevelopmentPlan.md">开发计划</a></p>
                                      </blockquote>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">开发日志</h2><a
                                          id="user-content-开发日志" class="anchor" aria-label="Permalink: 开发日志"
                                          href="#开发日志"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <blockquote>
                                        <p dir="auto">--&gt; <a
                                            href="/HengXin666/HXNet/blob/main/documents/DevelopmentLog.md">开发日志</a></p>
                                      </blockquote>
                                      <div class="markdown-heading" dir="auto">
                                        <h2 tabindex="-1" class="heading-element" dir="auto">性能测试</h2><a
                                          id="user-content-性能测试" class="anchor" aria-label="Permalink: 性能测试"
                                          href="#性能测试"><svg class="octicon octicon-link" viewBox="0 0 16 16"
                                            version="1.1" width="16" height="16" aria-hidden="true">
                                            <path
                                              d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">
                                            </path>
                                          </svg></a>
                                      </div>
                                      <div class="markdown-alert markdown-alert-tip" dir="auto">
                                        <p class="markdown-alert-title" dir="auto"><svg
                                            class="octicon octicon-light-bulb mr-2" viewBox="0 0 16 16" version="1.1"
                                            width="16" height="16" aria-hidden="true">
                                            <path
                                              d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z">
                                            </path>
                                          </svg>Tip</p>
                                        <ul dir="auto">
                                          <li>协程版本: (基准: 别人22w/s的并发的程序在我这里一样的参数也就3w+/s..)</li>
                                        </ul>
                                      </div>
                                      <div
                                        class="highlight highlight-source-shell notranslate position-relative overflow-auto"
                                        dir="auto" data-snippet-clipboard-copy-content="# 读写 index.html
╰─ wrk -c1000 -d15s http://localhost:28205/
Running 15s test @ http://localhost:28205/
  2 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.91ms    5.76ms  73.87ms   77.52%
    Req/Sec    38.43k     8.84k   67.78k    69.86%
  1137056 requests in 15.06s, 3.53GB read
Requests/sec:  75521.83
Transfer/sec:    239.91MB

# 没有文件读写
╰─ wrk -c1000 -d15s http://localhost:28205/home/123/123
Running 15s test @ http://localhost:28205/home/123/123
  2 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.30ms    3.60ms  40.93ms   76.85%
    Req/Sec    71.23k    22.11k  132.67k    68.15%
  2097727 requests in 15.09s, 412.11MB read
Requests/sec: 139024.19
Transfer/sec:     27.31MB">
                                        <pre><span class="pl-c"><span class="pl-c">#</span> 读写 index.html</span>
╰─ wrk -c1000 -d15s http://localhost:28205/
Running 15s <span class="pl-c1">test</span> @ http://localhost:28205/
  2 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.91ms    5.76ms  73.87ms   77.52%
    Req/Sec    38.43k     8.84k   67.78k    69.86%
  1137056 requests <span class="pl-k">in</span> 15.06s, 3.53GB <span class="pl-c1">read</span>
Requests/sec:  75521.83
Transfer/sec:    239.91MB

<span class="pl-c"><span class="pl-c">#</span> 没有文件读写</span>
╰─ wrk -c1000 -d15s http://localhost:28205/home/123/123
Running 15s <span class="pl-c1">test</span> @ http://localhost:28205/home/123/123
  2 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.30ms    3.60ms  40.93ms   76.85%
    Req/Sec    71.23k    22.11k  132.67k    68.15%
  2097727 requests <span class="pl-k">in</span> 15.09s, 412.11MB <span class="pl-c1">read</span>
Requests/sec: 139024.19
Transfer/sec:     27.31MB</pre>
                                      </div>
                                    </article>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div> <!-- --> <!-- -->
                          <script type="application/json"
                            id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script>
                        </div>
                      </react-partial>

                      <input type="hidden" data-csrf="true"
                        value="chpT7zeaC43+cA8jkQUU1b2Jfvd//HvsNJGI8b2lY1qtADDop71svhKJA28n1UWdkjqRjbq08E0cNji+2vHCdQ==" />
                    </div>
                    <div data-view-component="true" class="Layout-sidebar">

                      <div class="BorderGrid about-margin" data-pjax>
                        <div class="BorderGrid-row">
                          <div class="BorderGrid-cell">
                            <div class="hide-sm hide-md">
                              <h2 class="mb-3 h4">About</h2>

                              <p class="f4 my-3">
                                C++20协程和基于io_uringの高并发服务器; 可异步读写; 基于压缩前缀树编写的路由, 支持通配符解析;+
                                http/https/websocket、socks5代理、Json解析, 静态枚举映射, 万用print等 (Heng_Xin学习现代Cpp的代码存放库, )
                              </p>

                              <h3 class="sr-only">Topics</h3>
                              <div class="my-3">
                                <div class="f6">
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:http" href="/topics/http" title="Topic: http"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    http
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:json" href="/topics/json" title="Topic: json"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    json
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:router" href="/topics/router" title="Topic: router"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    router
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:cpp" href="/topics/cpp" title="Topic: cpp"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    cpp
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:openssl" href="/topics/openssl" title="Topic: openssl"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    openssl
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:https" href="/topics/https" title="Topic: https"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    https
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:websocket" href="/topics/websocket"
                                    title="Topic: websocket" data-view-component="true"
                                    class="topic-tag topic-tag-link">
                                    websocket
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:epoll" href="/topics/epoll" title="Topic: epoll"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    epoll
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:coroutine" href="/topics/coroutine"
                                    title="Topic: coroutine" data-view-component="true"
                                    class="topic-tag topic-tag-link">
                                    coroutine
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:cpp20" href="/topics/cpp20" title="Topic: cpp20"
                                    data-view-component="true" class="topic-tag topic-tag-link">
                                    cpp20
                                  </a>
                                  <a data-ga-click="Topic, repository page" data-octo-click="topic_click"
                                    data-octo-dimensions="topic:io-uring" href="/topics/io-uring"
                                    title="Topic: io-uring" data-view-component="true" class="topic-tag topic-tag-link">
                                    io-uring
                                  </a>
                                </div>

                              </div>

                              <h3 class="sr-only">Resources</h3>
                              <div class="mt-2">
                                <a class="Link--muted"
                                  data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:readme&quot;}"
                                  href="#readme-ov-file">
                                  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                    data-view-component="true" class="octicon octicon-book mr-2">
                                    <path
                                      d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z">
                                    </path>
                                  </svg>
                                  Readme
                                </a>
                              </div>


                              <h3 class="sr-only">License</h3>
                              <div class="mt-2">
                                <a href="#Apache-2.0-1-ov-file" class="Link--muted"
                                  data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:license&quot;}">
                                  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                    data-view-component="true" class="octicon octicon-law mr-2">
                                    <path
                                      d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z">
                                    </path>
                                  </svg>
                                  Apache-2.0 license
                                </a>
                              </div>




                              <include-fragment
                                src="/HengXin666/HXNet/hovercards/citation/sidebar_partial?tree_name=main">
                              </include-fragment>

                              <div class="mt-2">
                                <a href="/HengXin666/HXNet/activity" data-view-component="true"
                                  class="Link Link--muted">
                                  <svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1"
                                    width="16" data-view-component="true" class="octicon octicon-pulse mr-2">
                                    <path
                                      d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z">
                                    </path>
                                  </svg>
                                  <span class="color-fg-muted">Activity</span>
                                </a>
                              </div>


                              <h3 class="sr-only">Stars</h3>
                              <div class="mt-2">
                                <a href="/HengXin666/HXNet/stargazers" data-view-component="true"
                                  class="Link Link--muted">
                                  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                    data-view-component="true" class="octicon octicon-star mr-2">
                                    <path
                                      d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z">
                                    </path>
                                  </svg>
                                  <strong>1</strong>
                                  star
                                </a>
                              </div>

                              <h3 class="sr-only">Watchers</h3>
                              <div class="mt-2">
                                <a href="/HengXin666/HXNet/watchers" data-view-component="true"
                                  class="Link Link--muted">
                                  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                    data-view-component="true" class="octicon octicon-eye mr-2">
                                    <path
                                      d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14c-1.981 0-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2ZM1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5c1.473 0 2.825-.742 3.955-1.715 1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5c-1.473 0-2.825.742-3.955 1.715-1.124.967-1.954 2.096-2.366 2.717ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z">
                                    </path>
                                  </svg>
                                  <strong>1</strong>
                                  watching
                                </a>
                              </div>

                              <h3 class="sr-only">Forks</h3>
                              <div class="mt-2">
                                <a href="/HengXin666/HXNet/forks" data-view-component="true" class="Link Link--muted">
                                  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16"
                                    data-view-component="true" class="octicon octicon-repo-forked mr-2">
                                    <path
                                      d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z">
                                    </path>
                                  </svg>
                                  <strong>0</strong>
                                  forks
                                </a>
                              </div>

                              <div class="mt-2">
                                <a class="Link--muted"
                                  href="/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2FHengXin666%2FHXNet&amp;report=HengXin666+%28user%29">
                                  Report repository
                                </a>
                              </div>
                            </div>

                          </div>
                        </div>


                        <div class="BorderGrid-row">
                          <div class="BorderGrid-cell">
                            <h2 class="h4 mb-3" data-pjax="#repo-content-pjax-container"
                              data-turbo-frame="repo-content-turbo-frame">
                              <a href="/HengXin666/HXNet/releases" data-view-component="true"
                                class="Link--primary no-underline Link">
                                Releases
                              </a>
                            </h2>

                            <div class="text-small color-fg-muted">No releases published</div>

                          </div>
                        </div>



                        <div class="BorderGrid-row">
                          <div class="BorderGrid-cell">

                            <h2 class="h4 mb-3">
                              <a href="/users/HengXin666/packages?repo_name=HXNet" data-view-component="true"
                                class="Link--primary no-underline Link d-flex flex-items-center">
                                Packages
                                <span title="0" hidden="hidden" data-view-component="true" class="Counter ml-1">0</span>
                              </a>
                            </h2>


                            <div class="text-small color-fg-muted">
                              No packages published <br>
                            </div>



                          </div>
                        </div>


                        <div class="BorderGrid-row" hidden>
                          <div class="BorderGrid-cell">
                            <include-fragment src="/HengXin666/HXNet/used_by_list" accept="text/fragment+html">
                            </include-fragment>
                          </div>
                        </div>




                        <div class="BorderGrid-row">
                          <div class="BorderGrid-cell">
                            <h2 class="h4 mb-3">Languages</h2>
                            <div class="mb-2">
                              <span data-view-component="true" class="Progress">
                                <span style="background-color:#f34b7d !important;;width: 97.9%;" itemprop="keywords"
                                  aria-label="C++ 97.9" data-view-component="true"
                                  class="Progress-item color-bg-success-emphasis"></span>
                                <span style="background-color:#e34c26 !important;;width: 1.2%;" itemprop="keywords"
                                  aria-label="HTML 1.2" data-view-component="true"
                                  class="Progress-item color-bg-success-emphasis"></span>
                                <span style="background-color:#ededed !important;;width: 0.9%;" itemprop="keywords"
                                  aria-label="Other 0.9" data-view-component="true"
                                  class="Progress-item color-bg-success-emphasis"></span>
                              </span>
                            </div>
                            <ul class="list-style-none">
                              <li class="d-inline">
                                <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3"
                                  href="/HengXin666/HXNet/search?l=c%2B%2B"
                                  data-ga-click="Repository, language stats search click, location:repo overview">
                                  <svg style="color:#f34b7d;" aria-hidden="true" height="16" viewBox="0 0 16 16"
                                    version="1.1" width="16" data-view-component="true"
                                    class="octicon octicon-dot-fill mr-2">
                                    <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path>
                                  </svg>
                                  <span class="color-fg-default text-bold mr-1">C++</span>
                                  <span>97.9%</span>
                                </a>
                              </li>
                              <li class="d-inline">
                                <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3"
                                  href="/HengXin666/HXNet/search?l=html"
                                  data-ga-click="Repository, language stats search click, location:repo overview">
                                  <svg style="color:#e34c26;" aria-hidden="true" height="16" viewBox="0 0 16 16"
                                    version="1.1" width="16" data-view-component="true"
                                    class="octicon octicon-dot-fill mr-2">
                                    <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path>
                                  </svg>
                                  <span class="color-fg-default text-bold mr-1">HTML</span>
                                  <span>1.2%</span>
                                </a>
                              </li>
                              <li class="d-inline">
                                <span class="d-inline-flex flex-items-center flex-nowrap text-small mr-3">
                                  <svg style="color:#ededed;" aria-hidden="true" height="16" viewBox="0 0 16 16"
                                    version="1.1" width="16" data-view-component="true"
                                    class="octicon octicon-dot-fill mr-2">
                                    <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path>
                                  </svg>
                                  <span class="color-fg-default text-bold mr-1">Other</span>
                                  <span>0.9%</span>
                                </span>
                              </li>
                            </ul>

                          </div>
                        </div>

                      </div>
                    </div>

                  </div>
                </div>

              </div>


            </div>

          </turbo-frame>


        </main>
      </div>

    </div>

    <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo">
      <h2 class='sr-only'>Footer</h2>




      <div
        class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
        <div class="d-flex flex-items-center flex-shrink-0 mx-2">
          <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com">
            <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true"
              class="octicon octicon-mark-github">
              <path
                d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z">
              </path>
            </svg>
          </a>
          <span>
            &copy; 2024 GitHub,&nbsp;Inc.
          </span>
        </div>

        <nav aria-label="Footer">
          <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>

          <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0"
            aria-labelledby="sr-footer-heading">

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}"
                href="https://docs.github.com/site-policy/github-terms/github-terms-of-service"
                data-view-component="true" class="Link--secondary Link">Terms</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}"
                href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement"
                data-view-component="true" class="Link--secondary Link">Privacy</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}"
                href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}"
                href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}"
                href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}"
                href="https://support.github.com?tags=dotcom-footer" data-view-component="true"
                class="Link--secondary Link">Contact</a>
            </li>

            <li class="mr-3">
              <cookie-consent-link>
                <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
                  data-action="click:cookie-consent-link#showConsentManagement"
                  data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}">
                  Manage cookies
                </button>
              </cookie-consent-link>
            </li>

            <li class="mr-3">
              <cookie-consent-link>
                <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
                  data-action="click:cookie-consent-link#showConsentManagement"
                  data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}">
                  Do not share my personal information
                </button>
              </cookie-consent-link>
            </li>

          </ul>
        </nav>
      </div>
    </footer>




    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent>


    <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
      <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
        class="octicon octicon-alert">
        <path
          d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
        </path>
      </svg>
      <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
          class="octicon octicon-x">
          <path
            d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z">
          </path>
        </svg>
      </button>
      You can’t perform that action at this time.
    </div>

    <template id="site-details-dialog">
      <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
        <summary role="button" aria-label="Close dialog"></summary>
        <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
          <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button"
            aria-label="Close dialog" data-close-dialog>
            <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
              class="octicon octicon-x">
              <path
                d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z">
              </path>
            </svg>
          </button>
          <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
        </details-dialog>
      </details>
    </template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
      <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large"
        style="width:360px;">
      </div>
    </div>

    <template id="snippet-clipboard-copy-button">
      <div class="zeroclipboard-container position-absolute right-0 top-0">
        <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0"
          data-copy-feedback="Copied!" data-tooltip-direction="w">
          <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
            class="octicon octicon-copy js-clipboard-copy-icon m-2">
            <path
              d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z">
            </path>
            <path
              d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z">
            </path>
          </svg>
          <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
            class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2">
            <path
              d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z">
            </path>
          </svg>
        </clipboard-copy>
      </div>
    </template>
    <template id="snippet-clipboard-copy-button-unpositioned">
      <div class="zeroclipboard-container">
        <clipboard-copy aria-label="Copy"
          class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center"
          data-copy-feedback="Copied!" data-tooltip-direction="w">
          <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
            class="octicon octicon-copy js-clipboard-copy-icon">
            <path
              d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z">
            </path>
            <path
              d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z">
            </path>
          </svg>
          <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"
            class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
            <path
              d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z">
            </path>
          </svg>
        </clipboard-copy>
      </div>
    </template>
  </div>
  <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true"></div>
  <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true">
  </div>
</body>
</html>